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!!!