越来越多的公司喜欢在PHP程序员的笔试题中增加排序算法部分,以此来印证PHP程序的计算机基础。今天给大家列出4中常见的PHP排序算法。
1.冒泡排序:(优化过后的)
代码如下:
//冒泡排序
$array = array(11,-3,51,-7,9,100,2,-56,32,21);
$flag = false;
for ($i = 1;$i < count($array);$i++){
for ($j = 0;$j < count($array) - $i;$j++){
if ($array[$j] > $array[$j + 1]){
$temp = $array[$j];
$array[$j] = $array[$j + 1];
$array[$j + 1] = $temp;
$flag = true;
}
}
if (!$flag){
break;
}
$flag = false;
}
foreach ($array as $value){
echo $value.'  ';
}
2.选择排序(自己优化了下)
代码如下:
$array3 = array(11,-3,51,-7,9,100,2,-56,32,21);
for ($i = 0;$i < count($array3) - 1;$i++){
for ($j = $i + 1;$j < count($array3);$j++){
if ($array3[$j] < $array3[$i]){
$temp = $array3[$i];
$array3[$i] = $array3[$j];
$array3[$j] = $temp;
}
}
}
foreach ($array3 as $value){
echo $value.' ';
}
3.插入排序:
代码如下:
$array4 = array(11,-3,51,-7,9,100,2,-56,32,21);
for ($i = 1;$i < count($array4);$i++){
$insertVal = $array4[$i];
$insertIndex = $i - 1;
while ($insertIndex >=0 && $insertVal < $array4[$insertIndex]){
$array4[$insertIndex + 1] = $array4[$insertIndex];
$insertIndex--;
}
$array4[$insertIndex + 1] = $insertVal;
}
foreach ($array4 as $value){
echo $value.' ';
}
4.快速排序
代码如下:
function quickSort($arr){
if (count($arr) < 1){
return $arr;
}
$key = $arr[0];
$left_arr = array();
$right_arr = array();
for($i=1; $i < count($arr); $i++){
if($arr[$i] <= $key){
$left_arr[] = $arr[$i];
} else {
$right_arr[] = $arr[$i];
}
}
$left_arr = quickSort($left_arr);
$right_arr = quickSort($right_arr);
return array_merge($left_arr, array($key), $right_arr);
}
$arr = array(11,-3,51,-7,9,100,2,-56,32,21);
$arr2= quickSort($arr);
foreach ($arr2 as $key=>$value){
echo $value." ";
}
本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/articles/8681510.html