• 排序算法之冒泡&快速&桶式算法


     1 <?php
     2 
     3     /**
     4      * 冒泡排序算法(从小到大)
     5      * @param array  &$arr 待排序数组
     6      */
     7     function bubbleSort(&$arr){
     8         $flag = 0;
     9         $arr_size = count($arr);
    10         for($i=1; $i<=$arr_size-1; ++$i){
    11 
    12             for($j=0; $j<$arr_size-$i; ++$j){
    13                 if($arr[$j] > $arr[$j+1]){
    14                     $temp = $arr[$j];
    15                     $arr[$j] = $arr[$j+1];
    16                     $arr[$j+1] = $temp;
    17                     $flag = 1 ;
    18                 }
    19             }
    20 
    21             if($flag == 0){
    22                 break;
    23             }else{
    24                 $flag = 0;
    25             }
    26         }
    27     }
     1 /**
     2      * 快速排序算法(从小到大)
     3      * @param  array $arr 待排序数组
     4      * @return array      已排序数组
     5      */
     6     function quickSort($arr){
     7         $length = count($arr);
     8         if($length <= 1){
     9             return $arr;
    10         }
    11 
    12         $base = $arr[0];
    13         $left_array = []; 
    14         $right_array = [];
    15 
    16         for($i=1; $i<$length; $i++){
    17             if($base > $arr[$i]){
    18                 $left_array[] = $arr[$i];
    19             }else{
    20                 $right_array[] = $arr[$i];
    21             }
    22         }
    23 
    24         $left_array = quickSort($left_array);
    25         $right_array = quickSort($right_array);
    26 
    27         return array_merge($left_array,array($base),$right_array);
    28 
    29     }
     1 //桶式排序
     2     /**
     3      * 桶式排序算法(从小到大) 排序确定在某个范围内的整数时比快速排序还要快
     4      * @param  array &$arr 待排序数组
     5      */
     6     function bucketSort(&$arr){
     7         
     8         $min = 0;
     9         $max = 1000000;
    10         $array_bucket = array_fill($min, $max-$min+1, 0);
    11 
    12         foreach($arr as $value){
    13             ++$array_bucket[$value];
    14         }
    15 
    16         $arr = [];
    17         foreach($array_bucket as $k => $v){
    18             for($i=1;$i<=$v;$i++){
    19                 $arr[] = $k;
    20             }
    21         }
    22 
    23     }

    总结:

    NO.1  入门级排序算法----冒泡排序(优化后)

    NO.2  实操中最快排序算法----快速排序

    NO.3  比快速排序更快的排序算法----桶式排序(排序确定在某个范围内的整数时)

    To spare no effort to be a niubility in such a city with so so so many niubilities!!!
  • 相关阅读:
    java NIO的基本用法
    BufferedReader源码分析
    FileInputStream读中文乱码问题
    Java使用IO流对同一个文件进行读写操作
    php表格--大数据处理
    tp5--模型关联
    tp5 -- join注意事项
    表单外部提交
    网站防止sql注入
    微信网页授权报code been used, hints: [ req_id: XYv1Ha07042046 ]
  • 原文地址:https://www.cnblogs.com/ityang666/p/iTyang.html
Copyright © 2020-2023  润新知