快速排序简述

基本思想

将无序数组中的每一个数都放到正确的索引位置。

  1. 在无序数组中随机选择一个数作为基准数字pivot。
  2. 将大于pivot的数字放在pivot的右边位置,将小于pivot的数字放在pivot的左边位置。
  3. 此时pivot位于正确索引,分别对左右两个序列重复1.2步骤,直到所有数字都找到正确索引。

 

 假设无序数组如下:

我们每次都选择无序数组中的第一个数作为基准数字,因此选择17作为基准数字pivot,为了将小于17的数字放到左边,大于17的数字放到右边,我们设定两个下标,指向无序数组中的第一个数和最后一个数,如下图中,L下标从左往右移动,R下标从右往左移动。

首先,将R下标所指的数与pivot比较,5<17,则把5放到L下标位置。(若大于17,则不动,R下标继续移动)

然后,L下标向右移动, 将57与pivot比较,57>17,此时将57放到R下标位置。

 再回到R下标,继续向左移动,2<17,将2放到L下标位置。

再回到L下标 ,继续向右移动,对比6<17,此时不动。

L下标继续移动,15<17,依然不动。

 

 L下标继续移动,此时L与R重合,则将pivot放到该位置,第一次排序结束。

 其中,17已回归正确的索引位置,左边序列的数都比17小,右边序列的数都比17大。

 我们分别对左右两边的序列重复上述步骤(由于右序列下标已经重合,因此57也正确归位)  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值