zoukankan      html  css  js  c++  java
  • 归并排序理论---不含源码

    |   版权声明:本文为博主原创文章,未经博主允许不得转载。

      归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。因为采用的是分治法,因此归并排序的两个最重要的步骤是拆分合并

      复杂度:时间复杂度为O(nlogn) 这是该算法中最好、最坏和平均的时间性能。空间复杂度为 O(n);

      原理:假如将一个长为n初始序列,看成一个有n个有序的子序列,其中每个字序列的长度为1,然后在两两归并,就可以组成长为2的一组序列,这就是归并的第一趟排序,然后在将长为2的一组与另一组亮亮比较,就形成了第二趟排序,直到组成长为n的一组序列的时候,排序结束。

      我的语言表达能力不是很强,表达不是很清楚,下面通过实例演示归并排序的详细过程,如下所示:

      将设初始关键字序列为:50, 35, 56, 97, 76, 15, 30

      第一步:我们将上述长为7的序列的每一个元素看成一组,就有了如下的一组序列:

        

      第二步:将这一组序列两两归并比较,进行排序,如下:

         

      第三步: 以第一趟的结果,再次以一组为单位,两组一一比较,进行排序,如下图:

         

      第四步:参照上面的步骤,依次的归并,直到整个序列归并为一组的时候结束。

  • 相关阅读:
    Ubuntu下将python从2.7升级到3.5
    Python:IOError: image file is truncated 的解决办法
    Google Hack
    Python:将utf-8格式的文件转换成gbk格式的文件
    Python:字符编码详解
    IIS下使用appcmd批量搭建网站
    C#:注册机的实现【提供源代码下载】
    C#:实现快捷键自定义设置
    C#:如何解决WebBrowser.DocumentCompleted事件的多次调用
    C#:WebBrowser中伪造referer,为何对流量统计器无效?
  • 原文地址:https://www.cnblogs.com/geore/p/5892459.html
Copyright © 2011-2022 走看看