算法导论C语言实现: 快速排序

#include <common.h>

//PARTITION
int PARTITION(int *A, int p, int r)
{
	int x = A[r];
	int i = p - 1;
	int j = p;
	int tmp = 0;
	
	for (j = p; j < r; ++j) {
		if (A[j] <= x) {
			++i;
			tmp = A[i];
			A[i] = A[j];
			A[j] = tmp;
		}
	}

	tmp = A[i+1];
	A[i+1] = A[r];
	A[r] = tmp;

	return i+1;
}

//QUICKSORT
void QUICKSORT(int *A, int p, int r)
{
	int q;

	if (p < r) {
		q = PARTITION(A, p, r);
		QUICKSORT(A, p, q-1);
		QUICKSORT(A, q + 1, r);
	}
}

void main()
{
	int A[] = {8, 7, 10, 100, 88, 99, 0, 66};
	int i = 0;

	QUICKSORT(A, 0, sizeof(A)/sizeof(int) - 1);

	for (i = 0; i < sizeof(A)/sizeof(int); ++i) {
		TRACE("%d\t", A[i]);
	}
	TRACE("\n");

	system("pause");
}

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/v2nero/article/details/17093639
文章标签: 算法导论 C语言
个人分类: C语言 算法导论
上一篇算法导论C语言实现: 堆排序
下一篇算法导论C语言实现: 计数排序
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭