php quicksort,php数据结构与算法(PHP描述) 快速排序 quick sort

这篇博客详细介绍了快速排序算法的实现过程。通过递归地将数组分为小于和大于基准值两部分,然后合并,实现了排序。代码中展示了如何选取基准值,并提供了排序过程的中间结果,帮助理解算法原理。快速排序是一种高效的排序算法,平均时间复杂度为O(n log n)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**

* 快速排序 quick sort

*

**/

function sort_quick($arrData) {

if(empty($arrData) || !is_array($arrData)) return false;

$flag = $arrData[0];

$len = count($arrData) - 1;

if($len == 0) return $arrData; // 如果只有一个数据的数组直接返回

$arrLeft = array();

$arrRight = array();

$len_l = 0;

$len_r = 0;

for($i = 1; $i <= $len;$i++) {

if($arrData[$i] < $flag) {

$arrLeft[$len_l] = $arrData[$i]; // 小于的放左边

$len_l++;

} else {

$arrRight[$len_r] = $arrData[$i]; // 大于等于的放右边

$len_r++;

}

}

// 合并数组

$arrResult = array();

if($len_l) {

$arrLeft = sort_quick($arrLeft);

for($i = 0;$i <= $len_l - 1; $i++ ) {

$arrResult[$i] = $arrLeft[$i];

}

}

$arrResult[$len_l] = $flag;

$len_l++;

if($len_r) {

$arrRight = sort_quick($arrRight);

for($i = 0;$i <= $len_r - 1; $i++ ) {

$arrResult[$len_l] = $arrRight[$i];

$len_l++;

}

}

echo "== ",$flag," ==========================================
";

echo "data : ",print_r($arrData),"
";

echo "filter left: ",print_r($arrLeft),"
";

echo "filter right: ",print_r($arrRight),"
";

echo "return : ",print_r($arrResult),"
";

return $arrResult;

}

//$list = array(4,3,2,1,5,7,3,7);

$list = array(4,51,6,73,2,5,9,33,50,3,4,6,1,4,67);

$list = sort_quick($list);

echo "

";print_r($list);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值