几个简单易懂的排序算法。
<?php // 冒泡排序 function bubble_sort(array $arr){ $len = count($arr) - 1; for($i=0; $i< $len; $i++){ // 升序的话,两两比较第一轮排序过后,最后一个一定是最大的了; // 所以第二轮时$j依然从0开始,但是结束的时候只需要管前$len-1的长度 for($j=0; $j < $len-$i; $j++){ if ($arr[$j] > $arr[$j+1]){ $temp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $temp; } } } return $arr; } // 选择排序 function select_sort(array $arr){ $len = count($arr) - 1; for($i=0; $i<= $len; $i++){ for($j=$i; $j <= $len; $j++){ // 选择排序,就是选择下边是$i的元素,固定住它,让它去和$j的比和交换 if ($arr[$j] < $arr[$i]){ $temp = $arr[$j]; $arr[$j] = $arr[$i]; $arr[$i] = $temp; } } } return $arr; } // 插入排序 function insert_sort(array $arr){ $len = count($arr) - 1; for($i=0; $i<= $len; $i++){ // 在$i位置前面的元素进行插入 for($j=$i; $j >0; $j--){ if ($arr[$j-1] > $arr[$j]){ $temp = $arr[$j]; $arr[$j] = $arr[$j-1]; $arr[$j-1] = $temp; } } } return $arr; } $arr = array(12, 9, 1, 4, 6, -3); $bubble = bubble_sort($arr); $select = select_sort($arr); $insert = insert_sort($arr); echo ‘<pre>‘; print_r($bubble); echo ‘<pre>‘; print_r($select); echo ‘<pre>‘; print_r($insert); /** * Array ( [0] => -3 [1] => 1 [2] => 4 [3] => 6 [4] => 9 [5] => 12 ) */
原文:http://www.cnblogs.com/firstForEver/p/5131439.html