PHP实现-快速排序 Quick Sort

代码

# 待排序数据
$arr=array(1,43,54,62,21,66,32,78,36,76,39);  

function quickSort($arr){
    $len = count($arr);
    #如果参数数组元素小于等于一个则返回
    if($len<=1){
        return $arr;
    }
    #第一个子元素为默认基准元素
    $base_num = $arr[0];
    $left_array = $right_array = [];
    for($i=1;$i<$len;$i++){
        #根据基准元素将数组分为两部分
        if($base_num>$arr[$i]){
            $left_array[] = $arr[$i];
        }else{
            $right_array[] = $arr[$i];
        }
    }
    #循环处理数组
    $left_array = quickSort($left_array);
    $right_array = quickSort($right_array);
    #合并返回结果
    return array_merge($left_array,[$base_num],$right_array);
}

Out

array(11) {
  [0]=>
  int(1)
  [1]=>
  int(21)
  [2]=>
  int(32)
  [3]=>
  int(36)
  [4]=>
  int(39)
  [5]=>
  int(43)
  [6]=>
  int(54)
  [7]=>
  int(62)
  [8]=>
  int(66)
  [9]=>
  int(76)
  [10]=>
  int(78)
}

你可能感兴趣的:(PHP实现-快速排序 Quick Sort)