快速排序

<?php

/**

  • 快速排序
    *
  • @param $list array 待排序的序列
  • @return array 排序好的数组
    */
    function quickSort($list) {
    //递归出口,哪些不需要排序
    if(count($list) <= 1) {
    return $list;
    
    }
    //选择第一个为参考元
    $key = $list[0];
    //分割数组
    $left = $right = array();//初始化,有可能出现空数组
    for($i=1, $len=count($list); $i<$len; ++$i) {
    if($list[$i] < $key) {
        $left[] = $list[$i];
    } else {
        $right[] = $list[$i];
    }
    
    }
    //对小于和大于的分别排序:
    $sort_left = quickSort($left);
    $sort_right = quickSort($right);
    //合并排序结果
    $sort_list = array_merge($sort_left, array($key), $sort_right);
    return $sort_list;
    }
    //$list = array(50, 20, 40, 30, 70, 10, 60);
    $list = require './list.php';
    $s = microtime(true);
    $result = quickSort($list);
    $e = microtime(true);
    echo '快速:', $e-$s;
    //var_dump($result);

你可能感兴趣的:(快速排序)