冒泡排序
冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后部移向前部(从下标较大的单元移向下标较小的单元),就象水底下的气泡一样逐渐向上冒。
/** * 冒泡排序 * * @param $arr, array 需要排序的数组 * * @return array 排序好的数组 */ function bubble_sort($arr) { //利用双重循环完成 //外层循环控制 比较的轮数,每轮会将一个最大的气泡(数)浮到水面。 //如果数组的元素个数为N 则需要N-1轮完成 for($i=0, $len=count($arr); $i<$len-1; $i++) { //内层循环控制 的比较的次数, //第一轮需要比较 N-1次 //第二轮需要比较 N-2次 //比较次数由 $len-$i-1 for($j=0; $j<$len-$i-1; $j++) { //比较相邻的两个元素,将大的元素放到后边 // 相邻的下标使用 $j 和 $j+1 标志 if($arr[$j] > $arr[$j+1]) { //判断 前面的比后边的大,需要交换位置 $tmp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $tmp; } } } //返回比较后的数组 return $arr; } //测试 $arr1 = array(1, 3, 0, 2, 6, 2); print_r(bubble_sort($arr1));