冒泡排序法
function bubbleSort(&$arr){
$temp = 0;
$flag = false;
for($i=0;$i<count($arr)-1;$i++){
for ($j=0;$j<count($arr)-1-$i;$j++){
if($arr[$j]>$arr[$j+1]){
$temp = $arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$temp;
}
}
if(!$flag) break;
$flag = false;
}
}
选择排序法
function selectSort(&$arr){
$temp = 0;
for($i=0;$i<count($arr)-1;$i++){
$minVal = $arr[$i];
$minIndex = $i;
for($j=$i+1;$j<count($arr);$j++){
if($minVal>$arr[$j]){
$minVal = $arr[$j];
$minIndex = $j;
}
}
$temp = $arr[$i];
$arr[$i] = $arr[$minIndex];
$arr[$minIndex] = $temp;
}
}
快速排序法1
function insertSort(&$arr){
for($i=1;$i<count($arr);$i++){
$insertVal = $arr[$i];
$insertIndex = $i-1;
while ($insertIndex>=0 && $insertVal<$arr[$insertIndex]){
$arr[$insertIndex+1] = $arr[$insertIndex];
$insertIndex--;
}
if(($insertIndex+1)!=$i)
$arr[$insertIndex+1]=$insertVal;
}
}
快速排序法2
function quickSort($left,$right,&$arr){
$l = $left;
$r = $right;
$pivot = $arr[($left+$right)/2];
$temp = 0;
while ($l<$r){
while ($arr[$l]<$pivot) $l++;
while ($arr[$r]>$pivot) $r--;
if($l>=$r) break;
$temp = $arr[$l];
$arr[$l] = $arr[$r];
$arr[$r] = $temp;
if($arr[$l] == $pivot) --$r;
if($arr[$r] == $pivot) ++$l;
}
if($l==$r){
$l++;
$r--;
}
if($left<$r) quickSort($left,$r,$arr);
if($right>$l) quickSort($l,$right,$arr);
}
Test…
$arr = array();
for($k=0;$k<=5000;$k++){
$arr[$k]=rand(0,200);
}
$nowTime = date('Y-m-d H:i:s');
echo 'now time is :'.$nowTime;
//selectSort($arr);
//insertSort($arr);
//bubbleSort($arr);
quickSort(0,count($arr)-1,$arr);
//print_r($arr);
$nowTime = date('Y-m-d H:i:s');
echo '<br />exe after time is:'.$nowTime;