几个C语言的板子
快排
void qsort(int v[], int left, int right)
{
int i, last;
if (left >= right) return;
// 交换left与中值
swap(v, left, (left + right) / 2);
// 让left在区间[left, right]中找到正确的下标,以升序(即小于v[i] < v[left])为例
// 遍历区间[left + 1, right],若存在k个小于v[left]的数,则v[left]的下标应为left+k,而这k个数占据[left,left+k)
// 遍历过程中用区间[left + 1, last]存放小于v[left]的数
// last初值设置为left,此时区间为空集
last = left;
for (int i = left + 1; i <= right; i++)
{
if(v[i] < v[left])
{
swap(v, ++last, i);
}
}
swap(v, last, left);
qsort(v, left, last -1 );
qsort(v, last + 1, right);
}