zoukankan      html  css  js  c++  java
  • 排序算法之冒泡&快速&桶式算法

     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!!!
  • 相关阅读:
    yum安装Mysql
    在Centos上安装xtrabackup,对Mysql做备份
    Linux下使用yum安装Mysql之后,无法登陆mysql
    手动产生replication中的系统SP
    MySQL全面瓦解1:安装部署与准备
    开发笔记:PDF生成文字和图片水印
    调试与优化:一次数据中心看板 T+1 改 T+0 优化过程
    MySQL:SELECT COUNT 小结
    系统架构设计:平滑发布和ABTesting
    linux /dev/mapper/centos-root目录莫名其妙被占满
  • 原文地址:https://www.cnblogs.com/ityang666/p/iTyang.html
Copyright © 2011-2022 走看看