为了找工作,还是要看一看常考的东西
<?php
$arr = array(60,5,9,8,2,1,3,4,9,10);
function quick_sort($arr){
if(!is_array($arr)) return false;
$length = count($arr);
if($length<=1) return $arr;
$left = array();
$right = $left;
for($i=1; $i<$length; $i++){
if($arr[$i]<$arr[0]){
$left[] = $arr[$i];
}else{
$right[] = $arr[$i];
}
}
$left = quick_sort($left);
$right = quick_sort($right);
return array_merge($left, array($arr[0]),$right);
}
function insertSort($arr) {
$len = count($arr);
for ($i = 1; $i < $len; $i++){
// 当前值
$key = $arr[$i];
// 当前位置
$pos = $i;
// 如是当前位置 >0 && 当前值的前一个值 > 当前值 选出最值
while ($pos > 0 && $arr[$pos - 1] > $key) {
// 当前值 = 前一个值
$arr[$pos] = $arr[$pos - 1];
// 当前位置后移
$pos = $pos - 1;
}
// 找到当前值的位置
$arr[$pos] = $key;
echo join(',', $arr);
echo '<br>';
}
return $arr;
}
function selectSort($arr){
//定义进行交换的变量
$temp = 0;
for($i = 0; $i < count($arr)-1; $i++){
//假设$i就是最小值
$valmin = $arr[$i];
//记录最小值的下标
$minkey = $i;
for($j = $i + 1; $j < count($arr); $j++){
//最小值大于后面的数就进行交换
if($valmin > $arr[$j]){
$valmin = $arr[$j];
$minkey = $j;
}
}
//进行交换
$temp = $arr[$i];
$arr[$i] = $arr[$minkey];
$arr[$minkey] = $temp;
}
return $arr;
}
echo '快排',implode(',',quick_sort($arr)).'<br>';
echo '插入排序',implode(',',insertSort($arr)).'<br>';
echo '选择排序',implode(',',selectSort($arr)).'<br>';