zoukankan      html  css  js  c++  java
  • 归并排序

    归并排序运行时间一定与NlogN成比例,运行时间仅与关键字数目有关系,与它们的顺序无关,因此归并排序是一种稳定的排序算法。归并排序另一个特点是它的执行过程中基本是按顺序访问数据的,比较适合使用链表排序。归并排序最主要的缺点是直接执行时需要与N成比例的额外内存空间(使用链表可以避免这种额外空间状况)。归并排序比快速排序优先之处是归并排序是稳定的算法,而且对任何输入文件执行的速度都很快,而它的不足之处是它需要使用和数组大小成比例的额外内存空间。当倾向使用归并排序且速度很重要时,需要考虑一些归并排序改进方法。

    对两个已排好序的文件,我们可以简单将它们合并成一个排好序的输出文件,分别取出两个输入文件中最小的数据,将这两个数据中较小的数放到输出文件中,循环操作,直到两个输入文件的数据项都已输出。

     1 template <class Item>
     2 void mergeAB(Item c[], Item a[], int N, Item b[], int M)
     3 {
     4     for (int i = 0, j = 0, k = 0; k < N+M; k++)
     5         {
     6              if (i == N) {c[k] = b[j++]; continue;}
     7              if (j == M) {c[k] = a[i++]; continue;}
     8              c[k] = (a[i] < b[j]) ? a[i++] : b[j++];
     9         }
    10 }
  • 相关阅读:
    未来行业
    百度网盘搜索方法
    JavaScript继承详解
    Win 7下破解Loadrunner 11(带中文版下载地址)
    NET下RabbitMQ实践[WCF发布篇]
    NET下RabbitMQ实践[示例篇]
    NET下RabbitMQ实践[配置篇]
    8个超炫的 Web 效果
    Windows下安装zip包解压版mysql
    键盘上相当于鼠标右键的快捷键和电脑快捷键大全
  • 原文地址:https://www.cnblogs.com/ningjing213/p/12186018.html
Copyright © 2011-2022 走看看