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

 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  比快速排序更快的排序算法----桶式排序(排序确定在某个范围内的整数时)

转载于:https://www.cnblogs.com/ityang666/p/iTyang.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值