一、声明数组
ini_set("max_execution_time", "12000"); $arr = [2,4,1,7,33,4,5,6,7,11,1,0,60,22,44,51,2,92,8,999]; $arr = array_rand((range(1,10000)),2000); shuffle($arr);
二、算法
1、冒泡排序
function bubbleSort($arr, $sort='asc'){ $sort = strtolower($sort); if($sort!='asc' && $sort!='desc'){ return false; } $arr = array_values($arr); $total = count($arr); $operator = ( $sort=='asc' ? '>' : '<' ); for ($i=0; $i < $total; $i++) { for ($j=0; $j < ($total-1-$i); $j++) { $temp = $arr[$j]; if( eval( 'return ($arr[$j] '.$operator.' $arr[$j+1]);' ) ){ $arr[$j] = $arr[$j+1]; $arr[$j+1] = $temp; } } } return $arr; }
2、快速排序
function fastSort( $arr, $sort='asc'){ $length = count( $arr ); if($length<2){ return $arr; } $arr = array_values( $arr ); $ruler = $arr[0]; //标尺 $left = $right = []; //存标尺左右两边的数据 for ($i=1; $i < $length; $i++) { if( $arr[$i] > $ruler ){ $left[] = $arr[$i]; }else{ $right[] = $arr[$i]; } } //再分别对 左边 和 右边的数组进行相同的排序处理方式 //递归调用这个函数,并记录结果 $left = fastSort($left); $right = fastSort($right); return array_merge( $left, array($ruler), $right) ; }
持续更新中............