排序––快速排序(三)

排序––快速排序(二)中已经给出快速排序的代码框架,但是程序还没考虑特殊情况,现进一步分析:

1、首先排序––快速排序(二)中的划分给出了一个初始的划分框架,并且如果序列中没有重复元素,并且每次都能选中中位数作为轴枢,那么该方案是正确的;

2、假设有重复元素,现规定轴枢元素左边的序列都是小于等于轴枢元素的,右边的序列大于轴枢元素,那么cb592fc450c958e0e45ddb94a151d972551.jpg首先需要变成82436aa97cc936ac36a43397cf93bf4c983.jpg,同时由于重复元素的引入使得当元素等于轴枢的时候left也要加1,假设所有元素都相等或者正好选择了一个最大的元素作为轴枢,那么left就会越界,因此还要加上left<right的判断,e719eb6141de79ad3dfbb33f2011c39a783.jpg,同时还可能导致left>right的情况,例如序列3、4、5并选择3为轴枢,那么left=1,right=0,因此1d4e1f89d74867b986386ec4ac94ec6509e.jpg需改成0571b6e3bd1cb7a7b602c333fd303c4457a.jpg。但是该代码还不是一个完全正确的代码,还是放到下篇分析吧,累了。。。

转载于:https://my.oschina.net/u/1268334/blog/3098493

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值