zoukankan      html  css  js  c++  java
  • 【归并排序】算法实现

    【归并排序】算法实现 

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

      s:合并前序列的大小;

      t:合并后序列的大小

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

     代码实现
     1 //应用上篇随笔的合并算法,实现数组排序
     2 /********************************************************************/
     3 /************************【归并排序算法】******************************/
     4 /********************************************************************/
     5 void sort_merge(int array[],int size)
     6 {
     7     int  i;//开始合并时的第一个序列的起始位置
     8     int s;//合并前序列的大小
     9     int t = 1;//合并后序列的大小
    10     
    11     while(t<size)
    12     {
    13         i=0;
    14         s=t;
    15         t=2*s;
    16         while((i+t)<size)
    17         {
    18             merge(array,i,i+s-1,i+t-1,t);//见 上篇随笔中的合并两个子顺序数组算法
    19             i=i+t;
    20         }
    21         if(i+s<size)
    22         {
    23             merge(array,i,i+s-1,size-1,size-i);
    24         }
    25     }

    运行结果:

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

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

  • 相关阅读:
    MongoDB开发应用实战
    throw 与 throws的应用
    JAVA异常
    【354】Numpy 相关函数应用
    【353】线性回归损失函数求导举例
    【352】矩阵转置性质
    【351】实数对向量求导公式及推导
    【350】机器学习中的线性代数之矩阵求导
    智能电视TV开发---客户端和服务器通信
    GPS两点的距离
  • 原文地址:https://www.cnblogs.com/wintergrass/p/2000268.html
Copyright © 2011-2022 走看看