数据结构学习笔记——————快速排序

声明:本文章参考郝斌老师的数据结构自学视频

今天花了一上午的时间终于明白快速排序的原理了,这里和大家分享一下。

比如有一串数字:5 26 8 4 3 7,我们通过快速排序先找出第一个数字 5 在这一串数字中的位置,然后再对数字 5 两边的数字进行同样的排序方法,最终将整串数字排序完毕。

找到第一个数字 5 的具体步骤如下:

从这串数字的两头出发,把第一个数字的位置取名为 L (low),最后一个数字的位置为 H (high)。在找第一个数字的位置的过程中不断相向移动 L 和 H 的位置,知道 L和 H的位置重叠在一起,此位置就是第一个数字 5 所在的位置。

上面这张图片是为了说明这一串数字每个数字的初始位置。

上面这张图 L 和 H 位是怎样移动的。因为在一开始 H 位处在这串数字的尾端,即第7个位置上,因为数字 7 > 5,所以此时不需要 H 和 L位置上的数字进行交换。然后 H 位继续向左移动,到了第6个位置,这个位置上的数字是3,因为 数字 3 < 5,所以,数字 3 和数字 5 要进行交换,结果就如上图所示。


接下来

L 位移动到了位置2,在位置2处的数字为2,因为数字 2 < 5,所以此时不需要交换 L 和 H位置的数字,然后L位继续向右移动,来到了位置3,此时,处于位置3处的数字是6,因为 6 > 5,所以,要交换数字 6 和数字5,结果就如上图所示。

接下来重复上面的过程:



总之:就是不断的寻找新的 L和新的 H位并且进行比较,如果L位上的数字 < H位上的数字则不替换,继续寻找,反之,进行替换,再继续寻找。一定要从 H位开始,依次向左移动。

最后L和H位在第四个位置处重叠,所以第四个位置就是数字5所在的序列中的位置。


注:这种快速排序的方法一次操作只能找出第一个数字的具体位置,并不能对整串数字进行排序,所以需要重复这个过程,知道每个数字都能对应到正确的位置上为止。 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值