首页 > 代码库 > 排序算法之冒泡&快速&桶式算法

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

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

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