一、算法思想
从待排序列中任取一个元素(例如取第一个)作为枢轴,所有比它小的元素一律前放,所有比它大的元素一律后放,形成左右两个子表;然后再对各子表重新选择中心元素并依此规则调整,直到每个子表的元素只剩一个。此时便为有序序列了。
二、算法过程
以第1趟快速排序为例,详解过程:
(1)首先,选择256作为枢轴,i=0,j=length-1,分别指向头、尾关键字
(2)将 j 从右向左开始扫描,找到小于256的数076,令 R[ i ] = R[ j ]
(3)将 i 从左向右开始扫描,找到大于256的数301,令 R[ j ] = R[ i ]
(4)将 i 从右向左开始扫描,找到小于256的数129,令 R[ i ] = R[ j ]
(5)将 i 从左向右开始扫描,找到大于256的数751,令 R[ j ] = R[ i ]
(6)将 i 从右向左开始扫描,此时 i = j,故将256填入空缺处,得到最终答案
三、实现
int Partition(int R[],int low,int high)
{
int temp=R[0];
while(low<high)
{
while(low<high && temp<=R[high])
{
high--; // 直到找到比temp小的元素
}
R[low