算法导论-快速排序

 

解题思路

 

快速排序是排序算法中时间复杂度较好的一种解法,它每一轮从待排序的数组中取一个数,通过比较移动各个数字,小于该数的移到左边,大于的移到右边,然后再递归地在左右两边进行此算法,直到带排序数组长度变为1。算法导论中快速排序的分治解法相当简介,在此我用C++来加以记录。

 

代码

 

int Partition(int a[], int f, int l) {
	int i = f - 1;
	for (int j = f; j < l; j++)
	{
		if (a[j] <= a[l]) {
			i++;
			swap(a[i], a[j]);
		}
	}
	i++;
	swap(a[i], a[l]);
	return i;
}

void QuickSort(int a[], int f, int l) {
	if (l > f) {
		int p = Partition(a, f, l);
		QuickSort(a, f, p - 1);
		QuickSort(a, p + 1, l);
	}
}

 

posted @ 2018-03-27 19:22  FlyingWarrior  阅读(167)  评论(0编辑  收藏  举报