快速排序算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序算法相关的知识,希望对你有一定的参考价值。

快速排序算法是一种非常高效的内部排序算法,其平均时间复杂度为O(nlogn),且其性能在相同时间复杂度中最好,不过

在最坏的情况下会退化成冒泡排序,此时时间复杂度为O(n^2)。就平均性能来讲,快速排序是一种非常高效的算法,现在

介绍一种比较简单的快速排序的实现算法。

代码如下:

#include <stdio.h>
#define  N  10
int main()
{
	void sort(int *a, int left, int right);
	int a[N];
	int i;
	for(i = 0; i < N; i++)
		scanf("%d", &a[i]);

	sort(a, 0, N-1);     // 缺陷,主函数中调用时,要检查left是否小于right
	for(i = 0; i < N; i++)
		printf("%d ", a[i]);

	return 0;
}

void sort(int *a, int left, int right)
{
	if(left < right)   // 当只剩一个数据时返回,即left == right
	{
		int key = a[left];
		int low = left;
		int high = right;
		while(low < high)
		{
			while(low < high && a[high] >= key) high--;
			a[low] = a[high];
			
			while(low < high && a[low] <= key) low++;
			a[high] = a[low];
		}
		a[low] = key;
		sort(a, left, low-1);   // 对左半部分排序
		sort(a, low+1, right);  // 对右半半部分排序
	}
}

  

以上是关于快速排序算法的主要内容,如果未能解决你的问题,请参考以下文章

一行Python代码搞定快速排序算法

排序算法 | 快速排序(含C++/Python代码实现)

交换排序(冒泡排序快速排序的算法思想及代码实现)

快速排序/快速选择算法

快速排序算法详解及代码实现

排序算法——快速排序的图解代码实现以及时间复杂度分析