归并排序

来源:互联网 发布:大数据与软件工程 编辑:程序博客网 时间:2024/05/29 04:58
快速排序、堆排序和归并排序理论上时间复杂度为O(nlogn ),是内存占用较少的情况下,速度最快的排序算法。

当然桶排序的时间复杂度为O(n),但是需要牺牲巨大内存。

#include<iostream>using namespace std;void Merge(int a[],int f,int mid,int l,int b[]){    int s1=f,s2=mid+1;    int k=f;    while(s1<=mid&&s2<=l)    {        if(a[s1]<=a[s2])        {            b[k]=a[s1];            k++;            s1++;        }        else        {            b[k]=a[s2];            k++;            s2++;        }    }        while(s2<=l)        {            b[k]=a[s2];            k++;            s2++;        }        while(s1<=mid)        {            b[k]=a[s1];            k++;            s1++;        }    for(int i=f; i<=l; i++)        a[i]=b[i];}void Gui_sort(int a[],int f,int n,int b[]){    if(f<n)    {        int mid=(f+n)/2;        Gui_sort(a,f,mid,b);        Gui_sort(a,mid+1,n,b);        Merge(a,f,mid,n,b);    }}int main(){    int a[5]= {3,1,5,4,2};    int b[5];    int n=4;    Gui_sort(a,0,4,b);    for(int i=0; i<5; i++)        cout<<b[i]<<endl;    return 0;}


0 0
原创粉丝点击