Go语言 排序与搜索切片

Python013

Go语言 排序与搜索切片,第1张

Go语言标准库中提供了sort包对整型,浮点型,字符串型切片进行排序,检查一个切片是否排好序,使用二分法搜索函数在一个有序切片中搜索一个元素等功能。

关于sort包内的函数说明与使用,请查看 https://godoc.org/sort

在这里简单讲几个sort包中常用的函数

在Go语言中,对字符串的排序都是按照字节排序,也就是说在对字符串排序时是区分大小写的。

二分搜索算法

Go语言中提供了一个使用二分搜索算法的sort.Search(size,fn)方法:每次只需要比较㏒₂n个元素,其中n为切片中元素的总数。

sort.Search(size,fn)函数接受两个参数:所处理的切片的长度和一个将目标元素与有序切片的元素相比较的函数,该函数是一个闭包,如果该有序切片是升序排列,那么在判断时使用 有序切片的元素 >= 目标元素。该函数返回一个int值,表示与目标元素相同的切片元素的索引。

在切片中查找出某个与目标字符串相同的元素索引

选择排序提高了冒泡排序的性能,它每遍历一次列表只交换一次数据,即进行一次遍历时找 到最大的项,完成遍历后,再把它换到正确的位置。和冒泡排序一样,第一次遍历后,最大的数 据项就已归位,第二次遍历使次大项归位。这个过程持续进行,一共需要 n-1 次遍历来排好 n 个数 据,因为最后一个数据必须在第 n-1 次遍历之后才能归位。

选择单元格区域中的一列日期时间,或者确保活动单元格在包含日期或时间的表列中。

选择单元格区域或表中的一列日期或时间。

在“开始”选项卡上的“编辑”组中,单击“排序和筛选”,然后执行下列操作之一:

若要按从早到晚的顺序对日期或时间排序,请单击“从最旧到最新排序”。

若要按从晚到早的顺序对日期或时间排序,请单击“从最新到最旧排序”。

问题:检查日期和时间是否存储为日期或时间 如果结果不是您所希望的,可能是因为该列中包含存储为文本(而不是日期或时间)的日期或时间。要使 Excel 正确地对日期和时间进行排序,该列中的所有日期和时间都必须存储为日期或时间系列数值。如果 Excel 无法将值识别为日期或时间值,就会将该日期或时间存储为文本。有关详细信息,请参阅将存储为文本的日期转换为日期。

注释 如果要按星期日期进行排序,请设置单元格格式以显示星期日期。如果要按星期日期进行排序,而不考虑日期,请使用 TEXT 函数将它们转换为文本。但是,TEXT 函数会返回一个文本值,因此排序操作将基于字母数字数据。有关详细信息,请参阅按星期日期显示日期。