/**數組
*/ui
function bubble_sort($array){code
$count = count($array); if($count <= 0) return false; for ($i = 0;$i < $count;$i++){ for($j = $count - 1;$j > $i;$j--){ if($array[$j] < $array[$j-1]){ $temp = $array[$j]; $array[$j] = $array[$j-1]; $array[$j-1] = $temp; } } } return $array;
}排序
/**io
*/
function quick_sort($array){function
$count = count($array); if($count <= 1) return $array; $key = $array[0]; $left_arr = array(); $right_arr = array(); for($i = 1;$i < $count;$i++){ if($key > $array[$i]){ $left_arr[] = $array[$i]; }else{ $right_arr = $array[$i]; } } $left_arr = quick_sort($left_arr); $right_arr = quick_sort($right_arr); return array_merge($left_arr,array($key),$right_arr);
}select
/**循環
*/
function select_sort($arr){sort
//實現思路,雙重循環完成,外層控制輪數,當前的最小值。內層控制比較次數 //$i 當前最小值的位置,須要參與比較的元素 for ($i = 0,$len = count($arr);$i < $len;$i++){ //先假設最小的值的位置 $p = $i; //$j 當前都須要和哪些元素比較,$i後邊的 for ($j = $i+1;$j < $len;$j++){ //$arr[$p]是當前已知的最小值 if($arr[$p] > $arr[$j]){ //比較,發現更小的,記錄下最小值的位置,而且在下次比較時, //應該採用已知的最小值進行比較 $p = $j; } } //已經肯定了當前的最小值的位置,保存到$p中 //若是發現最小值的位置與當前假設的位置$i不一樣,則位置互換便可 if($p != $i){ $tmp = $arr[$p]; $arr[$p] = $arr[$i]; $arr[$i] = $tmp; } } //返回最終結果 return $arr;
}移動
/**
*/
function insert_sort($arr){
//區分哪部分是已經排序好的 //哪部分是沒有排序的 //找到其中一個須要排序的元素 //這個元素就是從第二個元素開始,到最後一個元素都是這個須要排序的元素 //利用循環就能夠標誌出來 //i循環控制,每次須要插入的元素,一旦須要插入的元素控制好了, //間接已經將數組分紅了2部分,下標小於當前的(左邊的),是排序好的序列 for($i = 1,$len = count($arr);$i < $len;$i++){ //得到當前須要比較的元素值 $tmp = $arr[$i]; //內層循環控制比較並插入 for($j = $i-1;$j >= 0;$j--){ //$arr[$j],須要插入的元素,$arr[$j],須要比較的元素 if($tmp < $arr[$j]){ //發現插入的元素要小,互換位置 //將後邊的元素與前面的元素交換 $arr[$j+1] = $arr[$j]; //將前面的數設置爲當前須要交換的數 $arr[$j] = $tmp; }else{ //若是碰到不須要移動的元素 //因爲是已經排序好的數組,則前面的就不須要再次比較了 break; } } } //將這個元素插入到已經排序好的序列內 //返回 return $arr;
}