merge sort and quick sort 自己去理解吧

时间:2023-12-17 21:10:38
 <?php

 $digits=array(,,,,,,,);
function quickSort($arr){
$len=count($arr);
if($len<=){
return $arr;
}
$midKey=$arr[];
$lefts=array();
$rights=array();
for($i=;$i<$len;$i++){
if($arr[$i]<$midKey){
$lefts[]=$arr[$i];
}else{
$rights[]=$arr[$i];
}
}
$lefts=quickSort($lefts);
$rights=quickSort($rights);
return array_merge($lefts,array($midKey),$rights);
}
echo '<pre>';
//print_r(quickSort($digits)); function insertSort($digits,$inkey){
$digits=quickSort($digits);
$count=count($digits)-;
for($j=$count;$j>=;$j--){
$key=$digits[$j];
if($inkey<=$digits[$j]&&$inkey>=$digits[$j-]){
$digits[$j]=$inkey;
break;
}
$digits[$j+]=$key;
}
return $digits;
}
$inkey=;
//print_r(insertSort($digits,$inkey)); function mergeSort($digits){
if(count($digits)<=){
return $digits;
}
$mid=count($digits)/-;
$count=count($digits)-;
$right=array();
$left=array();
for($i=;$i<=$count;$i++){
if($i<=$mid){
$left[]=$digits[$i];
}else{
$right[]=$digits[$i];
}
}
$left=mergeSort($left);
$right=mergeSort($right);
$result=merge($left,$right);
return $result;
}
function merge($left,$right){
$llen=count($left);
$rlen=count($right);
$count=$llen+$rlen-;
$i=;$j=;
while(count($left)>||count($right)>){
if(count($left)>&&count($right)>){
if($left[$i]<=$right[$j]){
$result[]=$left[$i];
array_shift($left);
}else{
$result[]=$right[$j];
array_shift($right);
}
}else if(count($right)==){
$result[]=$left[$i];
array_shift($left);
}else if(count($left)==){
$result[]=$right[$j];
array_shift($right);
}
}
return $result;
}
print_r(mergeSort($digits));