解题思路

 

快速排序是排序算法中时间复杂度较好的一种解法,它每一轮从待排序的数组中取一个数,通过比较移动各个数字,小于该数的移到左边,大于的移到右边,然后再递归地在左右两边进行此算法,直到带排序数组长度变为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);
	}
}

 

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!