分治-归并排序

来源:互联网 发布:linux中cat命令详解 编辑:程序博客网 时间:2024/04/29 00:13

基本思想:将待排序元素分成大小大致相同的2个子集合,分别对2个子集合进行排序,最终将排好序的子集合合并成为所要求的排好序的集合。 

void MergeSort(Type a[],int left,int right)

  {

      if(left<right) {//至少有2个元素

      inti=(left+right)/2;  //取中点

      mergeSort(a, left,i);

      mergeSort(a, i+1, right);

      merge(a,b, left,i, right);  //合并到数组b

      copy(a,b, left, right);    //复制回数组a

      }

  }


T(n)=O(nlogn)渐进意义下的最优算法

&最坏时间复杂度:O(nlogn)
&平均时间复杂度:O(nlogn)
&辅助空间:O(n)


0 0