堆排序

来源:互联网 发布:搜索引擎客户数据分析 编辑:程序博客网 时间:2024/05/24 03:21

快速排序、堆排序和归并排序理论上时间复杂度为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;}

0 0