在排序––快速排序(二)中已经给出快速排序的代码框架,但是程序还没考虑特殊情况,现进一步分析:
1、首先排序––快速排序(二)中的划分给出了一个初始的划分框架,并且如果序列中没有重复元素,并且每次都能选中中位数作为轴枢,那么该方案是正确的;
2、假设有重复元素,现规定轴枢元素左边的序列都是小于等于轴枢元素的,右边的序列大于轴枢元素,那么首先需要变成,同时由于重复元素的引入使得当元素等于轴枢的时候left也要加1,假设所有元素都相等或者正好选择了一个最大的元素作为轴枢,那么left就会越界,因此还要加上left<right的判断,,同时还可能导致left>right的情况,例如序列3、4、5并选择3为轴枢,那么left=1,right=0,因此需改成。但是该代码还不是一个完全正确的代码,还是放到下篇分析吧,累了。。。