1. 程式人生 > >快速排序/quickSort

快速排序/quickSort

int partition(int a[], int l, int h) {
	int i=l+1, j=h;
	int me=l;
	while (i<j) {
		while (a[i]<=a[l] && i<j) {
			i++;
		}
		while (a[j]>a[l] && j>i) {
			j--;
		}
		if (i < j) {
			int swap = a[i];
			a[i++] = a[j];
			a[j--] = swap;
		}
	}
	if (i == j && a[l] <= a[j]) {
		j--;
	}
	if (l < j) {
		int swap = a[l];
		a[l] = a[j];
		a[j] = swap;
		me = j;
	}

	return me;
}
void quickSort(int a[], int l, int h) {
	if (l<h) {
		int me = partition(a, l, h);
		quickSort(a, l, me -1);
		quickSort(a, me+1, h);
	}
}