1 <?php 2 3 $digits=array(27,45,85,12,36,9,54,56); 4 function quickSort($arr){ 5 $len=count($arr); 6 if($len<=1){ 7 return $arr; 8 } 9 $midKey=$arr[0]; 10 $lefts=array(); 11 $rights=array(); 12 for($i=1;$i<$len;$i++){ 13 if($arr[$i]<$midKey){ 14 $lefts[]=$arr[$i]; 15 }else{ 16 $rights[]=$arr[$i]; 17 } 18 } 19 $lefts=quickSort($lefts); 20 $rights=quickSort($rights); 21 return array_merge($lefts,array($midKey),$rights); 22 } 23 echo '<pre>'; 24 //print_r(quickSort($digits)); 25 26 function insertSort($digits,$inkey){ 27 $digits=quickSort($digits); 28 $count=count($digits)-1; 29 for($j=$count;$j>=0;$j--){ 30 $key=$digits[$j]; 31 if($inkey<=$digits[$j]&&$inkey>=$digits[$j-1]){ 32 $digits[$j]=$inkey; 33 break; 34 } 35 $digits[$j+1]=$key; 36 } 37 return $digits; 38 } 39 $inkey=24; 40 //print_r(insertSort($digits,$inkey)); 41 42 function mergeSort($digits){ 43 if(count($digits)<=1){ 44 return $digits; 45 } 46 $mid=count($digits)/2-1; 47 $count=count($digits)-1; 48 $right=array(); 49 $left=array(); 50 for($i=0;$i<=$count;$i++){ 51 if($i<=$mid){ 52 $left[]=$digits[$i]; 53 }else{ 54 $right[]=$digits[$i]; 55 } 56 } 57 $left=mergeSort($left); 58 $right=mergeSort($right); 59 $result=merge($left,$right); 60 return $result; 61 } 62 function merge($left,$right){ 63 $llen=count($left); 64 $rlen=count($right); 65 $count=$llen+$rlen-1; 66 $i=0;$j=0; 67 while(count($left)>0||count($right)>0){ 68 if(count($left)>0&&count($right)>0){ 69 if($left[$i]<=$right[$j]){ 70 $result[]=$left[$i]; 71 array_shift($left); 72 }else{ 73 $result[]=$right[$j]; 74 array_shift($right); 75 } 76 }else if(count($right)==0){ 77 $result[]=$left[$i]; 78 array_shift($left); 79 }else if(count($left)==0){ 80 $result[]=$right[$j]; 81 array_shift($right); 82 } 83 } 84 return $result; 85 } 86 print_r(mergeSort($digits));