}
- 複製程式碼
-
-
-
- 複製程式碼
-
-
-
- 2、歸併排序
-
-
-
-
-
- function Merge(&$arr, $left, $mid, $right) {
- $i = $left ;
- $j = $mid + 1;
- $k = 0;
- $temp = array();
- while ($i {
- if ($arr[$i] $temp[$k++] = $arr[$i++];
- else
- $temp[ $k++] = $arr[$j++];
- }
- while ($i $temp[$k++] = $arr[$i++];
- while ($ j $temp[$k++] = $arr[$j++];
for ($i = $left, $j = 0; $i $arr[$i] = $temp[$j];
}
function MergeSort(&$arr, $left, $right)
{ if ($left {
$mid = floor(($left + $right) / 2);
MergeSort($arr, $left, $mid);
MergeSort( $arr, $mid + 1, $right);
Merge($arr, $left, $mid, $right);- }
- }
-
-
- 複製程式碼
-
-
-
- 3、二分查找-遞歸
-
-
-
-
function bin_search($arr,$low,$high,$value) {
if($low >$high) return false;
else {
$mid=floor(($low+$high)/2); if($value==$arr[$mid]) return $mid;
elseif($value return bin_search($arr,$low,$mid-1,$value);
else
return bin_search($arr,$mid+1,$high,$value);- }
- }
-
-
- 複製程式碼
-
-
-
- 4、二分查找-非遞歸
-
-
-
function bin_search($arr,$low,$high,$value) { while($ low $mid=floor(($low+$high)/2);
if($value==$arr[$mid]) return $mid; elseif($value $high=$mid-1;
else
$low=$mid+1;
}- return false;
- }
-
-
- 複製程式碼
-
-
-
- 5、快速排序
-
-
-
-
-
- function quick_sort($arr) {
- $n=count($arr);
- if($ n return $arr;
$key=$arr[0];
$left_arr=array(); $right_arr=array();
for($ i=1;$i if($arr[$i] $left_arr[]=$arr[$i]; else $right_arr[]=$arr[$i]; } $left_arr=quick_sort($left_arr); $right_arr=quick_sort($right_arr); return array_mer($$ ,array($key),$right_arr);}複製程式碼
6、選擇排序
- function select_sort($arr) {
- $n=count($arr);
- for($ i=0;$i $k=$i;
- for($j=$i+1;$j if ($arr[$j] $k=$j;
- }
- if($k!=$i) {
- $temp=$arr [ $i];
- $arr[$i]=$arr[$k];
- $arr[$k]=$temp;
- }
- }
- return $arr;
- }
複製程式碼
7、插入排序
- function insertSort($arr) {
- $n=count($arr);
- for($ i=1;$i $tmp=$arr[$i];
- $j=$i-1;
- while($arr[$j]> ;$tmp) {
- $arr[$j+1]=$arr[$j];
- $arr[$j]=$tmp;
- $j--;
- if( $jbreak;
- }
- }
- return $arr;
- }
複製代碼