I want some help…
  • 板块灌水区
  • 楼主Xiao800
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/5/5 13:04
  • 上次更新2023/10/23 16:37:12
查看原帖
I want some help…
931106
Xiao800楼主2023/5/5 13:04

那位dalao能帮我修改一下题解

反馈信息:

很遗憾,您上传的题解 快速排序 未能通过审核。原因是 LaTeX 公式/英文与汉字之间少空格; 。

这道题其实是逼着用快排的。

我们知道,QuickSort 的时间复杂度较低,比选排低的多。

所以,让我们一起学习这个好用的排序吧:

我们借用五分钟学算法的gif动图,感谢五分钟学算法。


快速排序动图

让我们来分析下步骤:

1.首先,操作数列中的所有数字。

2.在所有数字中选择一个数字作为排序的基准(pivot), pivot 通常是随机选择的,在这里,为了演示方便,我们选择最右边的数字作为 pivot。

3.选取好 pivot 后,在操作数列中选择最左边的数字标记为 左标记 ,最右边的数字。

4.当 左标记 达到超过 pivot 的数字时,停止移动。

5.当左右标记停止时,更改标记的数字。

6.因此,左标记 的作用是找到一个大于 pivot 的数字,右标记 的作用是找到一个小于 pivot 的数字。

7.通过交换数字,可以在数列的左边收集小于 pivot 的数字集合,右边收集大于 pivot 的数字集合。 标记为 右标记 将左边的标记向右移动。

8.交换之后,继续移动 左标记。

9.然后将右边的标记向左移动。

10.当 右标记 碰撞到 左标记 时也停止移动 如果左右侧的标记停止时,并且都在同一个位置,将这个数字和 pivot 的数字交换。

11.这就完成了第一次操作。

12.然后递归对这分成的两部分都执行同样的操作 完成 快速排序。


这就是快排的主要思路,看起来也没什么难的,那么,开动你们的大脑,开始写代码吧,其实,这道题直接套模板就行。

代码肥肠好写,这里就不出现了!

2023/5/5 13:04
加载中...