插入排序(Insertion Sort):每次將一個待排序的記錄,按其關鍵字大小插入到前面已經排序好的子文件中的適當位置,直到全部記錄插入完成為止。
//插入排序(一维数组) function insert_sort($arr) { $count = count($arr); for($i=1; $i<$count; $i++) { $tmp = $arr[$i]; $j = $i - 1; while($arr[$j] > $tmp) { $arr[$i] = $arr[$j]; $arr[$j] = $tmp; $j--; } } return $arr; }
//选择排序(一维数组) function selection_sort($arr) { $count = count($arr); for($i=0; $i<$count; $i++) { $k = $i; for($j=$i+1; $j<$count; $j++) { if($arr[$k] > $arr[$j]) { $k = $j; } if($k != $i) { $tmp = $arr[$i]; $arr[$i] = $arr[$k]; $arr[$k] = $tmp; } } } return $arr; }
//冒泡排序(一维数组) //实际效果是:每次循环将数组中最小的值放置到数组的最前段,然后,下一次循环不再循环已放置正确数组值的键,以此类推 function selection_sort($arr) { $count = count($arr); if($count <= 0) return false; for($i=0; $i<$count; $i++) { for($j=$count-1; $j>$i; $j--) { if($arr[$j] < $array[$j-1]) { $tmp = $arr[$j]; $arr[$j] = $arr[$j-1]; $arr[$j-1] = $tmp; } } } return $arr; }
//快速排序(一维数组) function quick_sort($arr) { $count = count($arr); if($count <= 1) return $arr; $key = $arr[0]; $left_arr = array(); $right_arr = array(); for($i=1; $i<$count; $i++) { if($arr[$i] <= $key) $left_arr[] = $arr[$i]; else $right_arr[] = $arr[$i]; } $left_arr = quick_sort($left_arr); $right_arr = quick_sort($right_arr); return array_merge($left_arr,array($arr), $right_arr); }
以上就介紹了PHP實作常見排序演算法,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。