c程序设计语言中提到了一种简单的快速排序
void swap(int v[],int i,int j)
{
int temp = v[i];
v[i] = v[j];
v[j] = temp;
}
void qsort3(int v[], int left, int right)
{
int i, last;
last = left;
i = left + 1;
if (left >= right)//结束排序的条件
return;
for (; i <= right; ++i)
{
if (v[i] <= v[left])//
swap(v, ++last, i);
}
swap(v, last, left);
qsort3(v, left, last - 1);
qsort3(v, last + 1, right);
}
下面对各个步骤进行解释
称left对应的元素为key
last最开始指向key,在循环过程中,每当我们发现一个小于等于key的元素时,我们就给last+1,然后交换这个元素和last+1对应的元素,那么last就指向新发现的小于等于key的元素,循环结束后,last以及last左边的元素统统都是小于等于key的元素,此时swap last和left,就保证了last指向key,last左边都小于等于key