PHP快速排序小例子 php快速排序实现方法
完整代码:
- set_time_limit(0);
- function quickSort($arr) {
- if (count($arr) > 1) { // 只判断数组长度大于1的情况
- $k = $arr[0]; // 默认参照对象为数组第一个对象
- $x = array(); // 比参照小的
- $y = array(); // 比参照大的
- $_size = count($arr);
- for ($i = 1; $i < $_size; $i++) {
- if ($arr[$i] <= $k) {
- $x[] = $arr[$i];
- } else {
- $y[] = $arr[$i];
- }
- }
- // 分别对两侧数组进行递归排列
- $x = quickSort($x);
- $y = quickSort($y);
- return array_merge($x, array($k), $y);
- } else {
- return $arr;
- }
- }
- $test_array = array();
- $n = 0;
- //测试一个30万条的记录
- while(++$n<=300000){
- $test_array[$n] = $n;
- }
- echo 'Array init!
'; - shuffle($test_array); // 打乱顺序
- echo 'Array shuffled
'; - echo date( 'Y-m-d H:m:s').'
'; - $res = quickSort($test_array);
- echo date('Y-m-d H:m:s');
- ?>
快速排序思想:
1)、将目标数组分成两个数组,默认以首元素为基准;
2)、如果比参照对象小则分配到Left数组,否则分配到Right;
3)、依照此方法分配知道数组中只有一个元素为止。 |