快排写法

#include
#include
void f(int start, int end, int *num) {
	if (start >= end)return;
	int point = start;
	for (int i = start; i < end; i++) {
		if (point == -1 && num[i] > num[end]) {
			point =i;
		}//找到大于end标记位的点
		else if (point != -1 && num[i] < num[end]) {
			std::swap(num[i], num[point]);
			point =-1;
		}//找到小于end位置并交换	
	}
	if (point != -1) {//排除所有情况小于end位置值的情况
		f(start, point - 1, num);
		f(point + 1, end, num);
	}
	else {		
		f(start, end -1, num);
	}
}
int main() {
	int num[5] = { 3,1,4,5,9 };
	f(0, 4, num);
	
	return 0;
}

你可能感兴趣的:(快排写法)