二路归并排序


”2路“归并,把两个已经有序的序列合并成一个。

核心操作:把数组内的两个有序序列归并成一个。

  • 空间复杂度O(n)
  • 时间复杂度O(nlog2n)
//归并排序
int *B = (int *)malloc (n * sizeof(int));    //定义足够大的数组B
void Merge(int A[], int low, int mid, int high){
    int i,j,k;
    for(k=low; k<=high; k++){    //将A复制给B
        B[k] = A[k];
    }
    for(i=low, j=mid+1, k=i; i
void MergeSort(int A[], int low, int high){
    if(low