php 快速排序的实现,php算法-php实现快速排序算法

/*

* 快速排序是编程中经常使用到的一种排序方法,作为必须掌握的一种算法,这里将进行php的快速排序实现

* 快速排序的核心思想就是将一个数组中第一项作为中界,所有比这个数大的放在它的右边,小的放在左边

* ,然后对其左边右边递归这个过程。

*/

main();

function main() {

$arr = array(3, 2, 5, 43, 23, 12, 32, 333, 4, 2, 4, 67, 100, 213);

$len = count($arr);

quick_sort($arr, $len);

print_r($arr);

}

/*

* @description 判断传入数据正确并调用自递归函数_quick_sort

* @params &$arr(整型数组引用),$len(数组长度)

*/

function quick_sort(&$arr, $len) {

if (empty($arr) || $len < 1) {

return;

}

_quick_sort($arr, 0, $len - 1);

}

/*

* @description 递归实现快速排序

* @params &$arr(整型数组引用),$start(数组开始索引值),$start(数组结束索引值)

*/

function _quick_sort(&$arr, $start, $end) {

if ($start >= $end)

return;

$middle = sort_middle($arr, $start, $end);

_quick_sort($arr, $start, $middle - 1); //分割线已左的继续进行排序

_quick_sort($arr, $middle + 1, $end); //分割线已右的继续进行排序

}

/*

* @description 接受整型数组,将所有比数组第一项小的数组放在左边,大的放在右边,最终数组第一项变成一个分割线,大的右边,小的左边

* @params &$arr(整型数组引用),$start(数组开始索引值),$start(数组结束索引值)

* @return int 分割数的位置

*/

function sort_middle(&$arr, $start, $end) {

// $debug=debug_backtrace(); echo "

"; print_r($debug); echo "
";

$loop = $start + 1;

$tail = $end - $start;

$head = $start;

$temp = $arr;

$mid = $temp[$start];

while ($loop <= $end) {

if ($mid > $temp[$loop]) {

$arr[$head] = $temp[$loop];

$head++;

} else {

$arr[$start + $tail] = $temp[$loop];

$tail--;

}

$loop++;

}

$arr[$head] = $mid;

return $head;

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值