【Algorithm】归并排序

来源:互联网 发布:对于网络直播的看法 编辑:程序博客网 时间:2024/05/16 16:11

【归并排序】算法实现 

   i:开始合并时第一个序列的起始位置;

  s:合并前序列的大小;

  t:合并后序列的大小

 ii+s-1i+t-1定义被合并的两个序列的边界。

//代码实现 //应用上篇随笔的合并算法,实现数组排序/********************************************************************//************************【归并排序算法】******************************//********************************************************************/void sort_merge(int array[],int size){    int  i;//开始合并时的第一个序列的起始位置    int s;//合并前序列的大小    int t = 1;//合并后序列的大小        while(t<size)    {        i=0;        s=t;        t=2*s;        while((i+t)<size)        {            merge(array,i,i+s-1,i+t-1,t);//见 上篇随笔中的合并两个子顺序数组算法            i=i+t;        }        if(i+s<size)        {            merge(array,i,i+s-1,size-1,size-i);        }    }

运行结果:

算法的时间复杂度为:O(nlogn);

空间复杂度为:O(n);


0 0