PHP四种基本排序

1. 冒泡排序

// 1.冒泡排序法
$array = [12,3,23,2,4,1,0];

function maoPao($arr){
    //先判断是不是空数组
    if(!empty($arr)){
        $len = count($arr);
        for($i=0;$i<$len;$i++){
            for($j=$i+1;$j<$len;$j++){
                if($arr[$i]>$arr[$j]){
                    $tmp = $arr[$i];
                    $arr[$i] = $arr[$j];
                    $arr[$j] = $tmp;
                }
            }
        }
    }
    
    return $arr;
}
print_r(maoPao($array));

2. 快速排序

$array = [12,3,23,2,4,1,0];

// 2.快速排序法
function quick_sort($arr){
    if (count($arr) <= 1) return $arr;  //这个判断必须加,不然报错,$left_arr和$right_arr就变成空数组了
        
        $len = count($arr);
        $left_arr = array();
        $right_arr = array();
        
        for($i=1;$i<$len;$i++){        //$i一定要从1开始 
            if($arr[$i]<$arr[0]){
                $left_arr[] = $arr[$i];
            }else{
                $right_arr[] = $arr[$i];
            }
        }
    
    $left_arr = quick_sort($left_arr);
    $right_arr = quick_sort($right_arr);
    return array_merge($left_arr,array($arr[0]),$right_arr); //注意arr[0]要变成数组才不会出错
}
print_r(quick_sort($array));

 3.选择排序

 1 //选择排序
 2 function selectSort($arr)
 3 {
 4     $len = count($arr);
 5     for($i=0;$i<$len;$i++){
 6         //获取但方法前值的索引
 7         $minIndex = $i;
 8         for($j=$i+1;$j<$len;$j++){
 9             if($arr[$j]<$arr[$minIndex]){
10                 $minIndex = $j;
11             }
12         }
13         if($i!=$minIndex){
14             $tmp = $arr[$i];
15             $arr[$i] = $arr[$minIndex];
16             $arr[$minIndex] = $tmp;
17         }
18     }
19     return $arr;
20 }
21 
22 $arr = [2,3,5,6,1,8,7,9,4];
23 $res = selectSort($arr);
24 echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;原数组:';
25 print_r($arr);
26 echo '<br>排序后的数组:';
27 print_r($res);

 4.插入排序

 1 function insert($arr) {
 2     $len = count($arr);
 3     if($len<=1) return $arr;
 4     for($i=1; $i<$len; $i++){
 5         for($j=$i; $j>0; $j--){
 6             if($arr[$j] < $arr[$j-1]){
 7                 $tmp = $arr[$j];
 8                 $arr[$j] = $arr[$j-1];
 9                 $arr[$j-1] = $tmp;
10             }else{
11                 break;
12             }
13         }
14     }
15     return $arr;
16 }
原文地址:https://www.cnblogs.com/bneglect/p/10479907.html