快速排序非递归用队列实现c++

快速排序非递归用队列实现

第一次写博客,写的不是太好,但不是我邢标吹牛耐心看保证你会!!!!
① 先了解快排原理:
假设有一个数组 6 2 1 7 9 3 4 5 8 10
1.先找一个数作为参考对象,为了方便,就以数组的第一个元素作为参考对象,所以6就是参考对象。
2.设立两个哨兵i,j,指向参考对象的后一个元素 ,j指向即将排序序列的最后一个元素(如果不太理解的话可以参考下面的图)
在这里插入图片描述
好!现在开始进行快速排序的第一轮,以6为参考对象,j先往前移动,直到找到比6小的元素停止,随后i往后找,直到找到比6大的元素停止(注意:一定要先移动j,在移动i)
①:j 找到了5 比 6 小停止了,i 找到了 7 比 6 大 停止了,随后将 7 和 5 交换。如图:
在这里插入图片描述
交换完之后:
在这里插入图片描述
②:交换完之后发现 j 指向 7,而 7 大于 6 ,i 指向 5 ,而 5小于 6,所以 j 要继续往前找,i要继续往后找,j 移动之后找到了 4小于6 停止,i 找到了 9 大于 6 停止,把 4 和 9进行交换。如图:
在这里插入图片描述

交换后:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值