zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    由u盘安装Ubuntu引出的事件
    初试Ubuntu
    从error 中学习
    快手一面:牛客:字符串左移
    快手一面:Leetcode:最小栈
    十三、线程池
    十二、windows临界区、其他各种mutex互斥量
    十一、std::async深入
    LeetCode(703):找出数据流中的第K大元素
    LeetCode(1003):检查替换后的字符串
  • 原文地址:https://www.cnblogs.com/bneglect/p/10479907.html
Copyright © 2011-2022 走看看