码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-09-04 01:31:29      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:

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

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

标签:

原文地址:http://www.cnblogs.com/ityang666/p/iTyang.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!