数组有很多常用的算法,包括冒泡排序、直接选择排序和反转排序。
一、冒泡排序
冒泡排序是最常用的数组排序算法之一,它排序数组元素的过程总是将小数往前放、大数往后放,类似水中气泡往上升的动作,所以称为冒泡排序。
1.基本思想
冒泡排序的基本思想是对比相邻的元素值,如果满足条件就交换元素值,把较小的元素值移动到数组前面,把大的元素移动到数组后面(也就是交换两个元素的位置),这样较小的元素就像气泡一样从底部上升到顶部。
2.算法示例
冒泡算法由双层循环实现,其中外层循环用于控制排序轮数,一般为要排序的数组长度减1次,因为最后一次排序只剩下一个数组元素,不需要对比,同时数组已经完成排序了。而内层循环主要用于对比数组中每个临近元素的大小,以确定是否交换位置,对比和交换次数随排序轮数减少。例如,一个拥有6个元素的数组,在排序过程中每一次循环的排序过程和结果如下图所示:
二、直接选择排序
直接选择排序方法属于选择排序的一种,它的排序速度要比冒泡排序快一些,也是常用的排序算法。
1.基本思想
直接选择排序的基本思想是将指定排序位置与其他数组元素分别对比,如果满足条件就交换元素值,注意,这里区别于冒泡排序,不是交换相邻元素,而是把满足条件的元素与指定的排序位置交换(如从最后一个元素开始排序),这样排序好的位置逐渐扩大,最后整个数组都成为已排序好的格式。与冒泡排序相比,直接选择排序的交换次数要少很多,所以速度会快些。
2.算法示例
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序的放在已排好序的数列的最后,直到全部待排序的数据元素排完。排序过程和结果如下图所示:
三、反转排序
顾名思义,反转排序就是以相反的顺序把原有数组的内容重新排序。反转排序算法在程序开发中也经常用到。
1.基本思想
反转排序的思想就是把数组的最后一个元素与第一个元素替换,倒数第二个元素与第二个元素替换,以此类推,直到把所有数组元素反转替换。
2.算法示例
反转排序就是对数组两边的元素进行替换,所以只需要循环数组长度的半数次,如数组长度为7,那么for循环只需要循环3次。排序过程和结果如下图所示: