• php排序


    1.冒泡排序

     function arrSort(array $arr){
         $flage=true;
         for($i=1,$length=count($arr);$i<=$length&&$flage;$i++){ 
             $flage=false;
             for($j=0;$j<$length-$i;$j++){
                 $k=$j+1;
                 if($arr[$j]<$arr[$k]){
                     $temp=$arr[$k];
                     $arr[$k]=$arr[$j];
                     $arr[$j]=$temp;
                     $flage=true;    
                 }
             }
         }
         return $arr;
    }

     2.插入排序

     function insert_srot(array $arr){
         $length=count($arr);
         //确定插入的次数
         for($i=0;$i<$length;$i++){
             //将当前待比较元素取出
             $temp=$arr[$i];
             //假设元素是排好序的
             $flage=true;
             //带比较元素和前面的数相比较,>排到后面
             for($j=$i-1;$j>=0;$j--){
                 if($temp<$arr[$j]){ 
                     $arr[$j+1]=$arr[$j];
                     //$arr[$j]=$temp;//如果大于则交换位置
                     $flage=false;//假设错误
                 }else{//只要发现$a[j]<$temp,就认为$arr[$j]的位置是对的,不在比较,减少循环次数
                     break;
                 }
                 // echo "$i  : $j  ";
                 // print_arr($arr);
             }
             if($flage==false){//如果是无序的,在这里交换位置,只需交换一次,和最后一个比$temp大的
                 $arr[$j+1]=$temp;
             }
         }
    
         return $arr;
     }

    3.选择排序

    /**
      * 选择排序法,确保每一轮下来$arr[$i]都是最小的
      * @param  array  $arr  待排序数组
      * @return array  $arr  排序好的数组
      */
     function arrSelecteSort(array $arr){
         $length=count($arr);
         $flage=true;
         for ($i=-1; ++$i<$length;) { 
             $minIndex=$i;
             for($j=$i;++$j<$length;) { 
                 if($arr[$j]<$arr[$minIndex]){//如果后面的数小于第一个数
                     $minIndex=$j;//$j为最小数的索引
                 }
             }
             if($i != $minIndex){//确定$i为最小数索引
                 $temp=$arr[$i];
                 $arr[$i]=$arr[$minIndex    ];
                 $arr[$minIndex]=$temp;        
             }    
         }
         return $arr;
     }

     4.快速排序

    /**
     * 快速排序法
     * @param  array $array
     * @return array $arr       
     */
    function quick_sort($array) {
         //递归出口。数组长度为1的时候直接返回
         if(count($array) <= 1) return $array;
         //选一个基础值,所有的值与该值比较大小,分成2个数组
         $key = $array[0];
         $left = $right=[];
         for($i = 1; $i < count($array); $i++) {
            if($array[$i] <= $key) {
                  $left[] = $array[$i];
            } else {
                  $right[] = $array[$i];
            }
         }
         //再将左右2遍数组继续分割
         $left = quick_sort($left);
         $right = quick_sort($right);
    
          // print_arr(array_merge($left, array($key), $right));
          // 合并数组
         return array_merge($left, array($key), $right);
    }
  • 相关阅读:
    设计模式之策略模式、观察者模式浅析
    axis2_1.6.2之构建web端和客户端
    EJB3之查询
    qpid之简单实例
    ant1.9.4之编译、打包、发布、清理
    四数之和
    电话号码的字母的组合
    最接近的三数之和
    三数之和
    最长公共前缀
  • 原文地址:https://www.cnblogs.com/jint-php7/p/9106978.html
Copyright © 2020-2023  润新知