2011年计算机二级C++辅导实例编程(25)

2014-10-19 00:09:12 · 作者: · 浏览: 321

  用C++实现合并排序


  合并排序的思想:当只有一个元素时终止排序,超过一个元素的话,将所有元素分成大致相同的两个集合,分别对两个集合进行排序,最后将排好序的子集合合并为所要求的排好序的集合。


  在最坏情况下,时间复杂度为O(nlogn),它是一个渐进的最优算法。


  #include


  #include


  //这个函数将b[0]至b[right-left+1]拷贝到a[left]至a[right]


  template


  void Copy(T a[],T b[],int left,int right)


  {


  int size=right-left+1;


  for(int i=0;i


  {


  a[left++]=b[i];


  }


  }


  //这个函数合并有序数组a[left:i],a[i+1:right]到b,得到新的有序数组b


  template