快排法思路与代码

xiaoxiao2021-02-28  86

<?php //快排法 //实现原理 //1.在数组中取出一个数v //2.v独自成为一个数组1,将比v小的元素分成数组2,比v大的元素分成数组3 //3.对数组2和数组3进行前两步操作 //4.最后输出数组1,v,数组2 //代码实现(有缺陷,递归时会变量覆盖) function quick_sort(&$array) { $v = array_pop($array); $bigArr = []; $smallArr = []; foreach ($array as $key => $value) { if ($value > $v) { $bigArr[] = $value; } else if ($value < $v) { $smallArr[] = $value; } } if (count($bigArr) > 1) { $bigArr = quick_sort($bigArr); } if (count($smallArr) > 1) { $smallArr = quick_sort($smallArr); } return array_filter(array_merge($smallArr, [$v] ,$bigArr)); } $arr = [3, 35, 9, 11, 7]; $res = quick_sort($arr); print_r($res);
转载请注明原文地址: https://www.6miu.com/read-85181.html

最新回复(0)