让你一看就懂的快速排序算法(Java)
快速排序 你也许会被快速排序的文章弄得迷迷糊糊,其实大体上去看,快速排序就一步:找个数做基准数,把小于它的数移到它左边,把大于它的数移到它右边。这句话是核心。然后我们只需要让基准数左边的重复上面的步骤,让基准数右边的再重复上面的步骤就完了。 比如我们有一个数组: int[] nums = {5, 2, 6, 8, 4, 7, 9, 1}; 快速排序的思想就是使用递归,其实使用递归并不是多么复杂,在理解算法的思想后,只需要关注算法中重复的步骤,那就是递归的核心代码。 比如快速排序的算法思想,大体代码如下: public void quick(int left, int right) { /* * 给这段代码起个名字为:基准校验 * 把小于基准数的移到左边,把大于基准数的移到右边 */ quick(left, now); //继续处理左边的 quick(now, right); //继续处理右边的 } 经过一遍基准校验,我们就找到了该基准数在完全排序后的正确位置! 大体算法的流程图: 写出上面的大体算法步骤,就表示我们已经有了雏形,现在该如何实现找个数做基准数,把小于它的数移到它左边,把大...