<?php
//快速排序
$arr = [5,3,6,8,1,9,4];
function quickSort($arr) {
$n = count($arr);
quickSortC($arr, 0, $n - 1);
return $arr;
}
function quickSortC(&$arr, $low, $high) {
if ($low >= $high) {
return;
}
$mid = partition($arr, $low, $high);
quickSortC($arr, $low, $mid - 1);
quickSortC($arr, $mid + 1, $high);
}
function partition(&$arr, $low, $high) {
$pivot = $arr[$high];
$i = $low;
for ($j = $low; $j < $high; $j++) {
if ($arr[$j] < $pivot) {
$tmp = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $tmp;
$i ++;
}
}
$tmp = $arr[$i];
$arr[$i] = $arr[$high];
$arr[$high] = $tmp;
return $i;
}
var_dump(quickSort($arr));
php实现快速排序 原地排序
最新推荐文章于 2021-10-27 17:09:37 发布