数组常用的排序法有:冒泡排序法、选择排序法、插入排序法、(快速排序法)。
1、冒泡排序法(交换式排序法):其基本思想是通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后部移向前部,就像水底下的汽泡一样逐渐向上冒。
举例说明:
$arr[$j+1]){ $temp=$arr[$j]; $arr[$j]=$arr[$j+1]; $arr[$j+1]=$temp; } } } print_r ($arr); ?>
打印输出:Array ( [0] => -5 [1] => -1 [2] => 0 [3] => 2 [4] => 3 [5] => 5 [6] => 10 )
若将上面的排序封装成一个函数,则代码如下:
$arr[$j+1]){ $temp=$arr[$j]; $arr[$j]=$arr[$j+1]; $arr[$j+1]=$temp; } } } }$arr=array(0,-1,3,-5,2,10,5); bubbleSort($arr);print_r($arr); ?>
注意:需要在函数中的参数前面添加“&”符,参数以引用(地址)传递,这样才能改变$arr的值,否则最后打印输出的还是原来的数组(即未经过排序)。
2、选择排序法
选择排序属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,经过和其他元素重整,再依原则交换位置后达到排序的目的。
举例说明:
$arr[$j]){ $minVal=$arr[$j]; $minIndex=$j; } } $temp=$arr[$i]; $arr[$i]=$arr[$minIndex]; $arr[$minIndex]=$temp; } } $arr=array(2,0,-1,1); selectSort($arr); print_r ($arr); ?>
3、插入排序法
其基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把他的排序码依次与有序表元素的排序码进行对比,将它插入到有序表中的适当位置,使之成为新的有序表。
举例说明:
=0&&$insertVal<$arr[$insertIndex]){ $insertIndex--; } //插入(这时就给$insertVal找到适当的位置) $arr[$insertIndex+1]=$insertVal; } } $arr=array(2,0,-1,1); insertSort($arr); print_r ($arr); ?>