常用排序算法的实现(C语言版)-快速排序

快速排序:
/*
*将r位置中的位置移动到正确位置q上,并返回q,使得在a[p]..a[q-1] < a[q],
a[q+1]..a[r] > a[q]
*/
int partition(int a[], int p, int r);
void qSort(int a[], int p, int r);

void quickSort(int a[], int n) {
	qSort(a, 0, n - 1);
}

void qSort(int a[], int p, int r) {
	int  q;
	while (p < r) {
		q = partition(a, p, r);
		qSort(a, p, q - 1);
		p = q + 1;
	}
}

int partition(int a[], int p, int r) {
	int x, i, j;

	x = a[r];
	i = p - 1;
	for (j = p; j < r; j++) {
		if (a[j] <= x) {
			i++;
			swap(a, i, j);
		}
	}
	i++;
	swap(a, i, r);
	return i;
}

你可能感兴趣的:(c,算法,排序,sort)