Blogs of C.K.Young

博客园 联系 订阅 管理
 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  比快速排序更快的排序算法----桶式排序(排序确定在某个范围内的整数时)

posted on 2016-09-03 23:42  C.K.Young  阅读(557)  评论(0编辑  收藏  举报