快速排序、堆排序和归并排序理论上时间复杂度为O(nlogn ),是内存占用较少的情况下,速度最快的排序算法。 当然桶排序的时间复杂度为O(n),但是需要牺牲巨大内存。
#include<iostream> using namespace std; void Dui(int a[],int i,int n) { int j,temp; j=i*2+1; temp=a[i]; while(j<n) { if(a[j]>temp) break; if(j+1<n&&a[j+1]<a[j]) j++; a[i]=a[j]; i=j; j=j*2+1; } a[i]=temp; } void Built(int a[],int n) { for(int i=n/2-1;i>=0;i--) { Dui(a,i,n); } } void Sort(int a[],int n) { cout<<a[0]<<endl; for(int i=n-1;i>0;i--) { int temp=a[0]; a[0]=a[i]; a[i]=temp; Dui(a,0,i); cout<<a[0]<<endl; } } int main() { int a[5]={3,1,2,5,4}; int n=5; Built(a,n); Sort(a,n); return 0; }