本文主要是介绍快速排序Quicksort(附快速排序程序),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
快速排序Quicksort
快速排序是一种最坏时间复杂度为n²的排序算法,但因平均性能非常好(期望时间复杂度为n lg n)而成为实际排序应用中最好的选择。
快速排序的一趟程序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另一部分的所有数据都要小,再按此方法对两部分数据分别进行快排程序,整个排序程序递归进行,以此达到整个数据变成有序序列。
下附快速排序Quicksort运行程序
排序顺序为:由小到大
#include<cstdio>
using namespace std;
int b[30];
void qsort(int a[],int l,int r)
{int i,j,m,k;i=l;j=r;m=a[(l+r)/2];while (i<=j){while (a[i]<m) i++;while (a[j]>m) j--;if (i<=j){k=a[i];a[i]=a[j];a[j]=k;i++;j--;}}if (l<j) qsort(a,l,j);if (i<r) qsort(a,i,r);
}int main()
{int i,n;scanf("%d",&n);for (i=1;i<=n;i++){scanf("%d",&b[i]);}qsort(b,1,n);for (i=1;i<=n;i++){printf("%d ",b[i]);}return 0;
}
这篇关于快速排序Quicksort(附快速排序程序)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!