首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以第一个元素为轴心的快速排序

以第一个元素为轴心的快速排序
EN

Stack Overflow用户
提问于 2018-11-09 03:31:59
回答 1查看 2.1K关注 0票数 1

我正在学习Quick-Sort,当第一个元素被选为轴心点时,我对它的工作原理感到困惑。

我正在尝试跟踪快速排序算法的第一步,将pivot S1移动到适当的位置。

例如: 17,-10,7,19,21,23,-13,31,59。

代码语言:javascript
复制
^# = pivot
^ pointer

我的理解是:

分割第一部分(此部分中的所有元素都小于枢轴)。

代码语言:javascript
复制
17, -10, 7, 19, 21, 23, -13, 31, 59
^#                               ^

比较1.没有交换。

代码语言:javascript
复制
17, -10, 7, 19, 21, 23, -13, 31, 59
^#                           ^

比较2.没有交换。

代码语言:javascript
复制
17, -10, 7, 19, 21, 23, -13, 31, 59
^#                      ^

比较3.交换。

代码语言:javascript
复制
-13, -10, 7, 19, 21, 23, 17, 31, 59
                     ^   ^#  

比较4.交换。

代码语言:javascript
复制
-13, -10, 7, 19, 21, 17, 23, 31, 59
                 ^   ^#  

比较5.交换。

代码语言:javascript
复制
-13, -10, 7, 19, 17, 21, 23, 31, 59
             ^   ^# 

比较6.交换。

代码语言:javascript
复制
-13, -10, 7, 17, 19, 21, 23, 31, 59
          ^  ^# 

比较7.没有交换。

代码语言:javascript
复制
 -13, -10, 7, 17, 19, 21, 23, 31, 59
       ^      ^# 

比较9.没有交换。

代码语言:javascript
复制
-13, -10, 7, 17, 19, 21, 23, 31, 59
  ^          ^# 

比较10.没有交换。

它是这样工作的吗?是否需要10次比较和4次交换才能将pivot S1移动到正确的位置?

EN

回答 1

Stack Overflow用户

发布于 2018-11-09 07:42:53

快速排序将具有两个移动指针和一个旋转指针

并且这些移动指针的初始位置将是0和n-1个位置(第一个和最后一个元素),并且右指针将向左移动以寻找较短的元素,然后一旦发现元素,左指针开始向右移动以搜索大于枢轴的元素一旦它们找到这些元素,它们都交换并继续执行相同的操作,直到两个指针相遇

一旦它们相遇,就会用pivot元素交换该元素。

查看下面示例中的指针移动

17, -10, 7, 19, 21, 23, -13, 31, 59 ^# ^

17, -10, 7, 19, 21, 23, -13, 31, 59 ^# ^

17, -10, 7, 19, 21, 23, -13, 31, 59 ^# ^

找到右指针-13 < 17现在开始移动左指针

17, -10, 7, 19, 21, 23, -13, 31, 59 \# ^ ^

17, -10, 7, 19, 21, 23, -13, 31, 59 \# ^ ^

17, -10, 7, 19, 21, 23, -13, 31, 59 \# ^ ^

左点找到一个值19 > 17,现在交换两个指针值

17, -10, 7, -13, 21, 23, 19, 31, 59 \# ^ ^

开始移动右点以找到较小的值,然后再移动轴心点

17, -10, 7, -13, 21, 23, 19, 31, 59 \# ^ ^

17, -10, 7, -13, 21, 23, 19, 31, 59 \# ^ ^

17, -10, 7, -13, 21, 23, 19, 31, 59 \# ^ ^

-13, -10, 7, 17, 21, 23, 19, 31, 59 ^ \#^

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53214891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档