zoukankan      html  css  js  c++  java
  • 归并排序法二(不设哨兵)



    include<iostream>
    using namespace std;
    void main()

     void Merge(int *A,int p,int q,int r);
        void MergeSort(int *A,int p, int r);

     int A[8]={3,41,52,26,38,57,49};
     MergeSort(A,1,7);
     for(int i=0;i<7;i++)
     {
      cout<<A[i]<<" ";

     }
     cout<<endl;


     char f;
     cin>>f;
    }



    void Merge(int *A,int p,int q,int r)
    {
     //构建左半部分和右半部分的辅助数组
     int n1=q-p+1;
     int n2=r-q;
     int *L=new int[n1];
     int *R=new int[n2];
     for (int i=0;i<n1;i++)
     {
      L[i]=A[p+i-1];
     }
     for(int j=0;j<n2;j++)
     {
      R[j]=A[q+j];
     }
     int i=0;
     int j=0;
     int k=p-1;
     while((i<=n1-1)&&(j<=n2-1))
     {
      if(L[i]<=R[j])
      {
       A[k]=L[i];
       i++;
      }
      else
      {
       A[k]=R[j];
       j++;
      }
      k++;
     }
     while(i<=n1-1)
     {
      A[k]=L[i];
      i++;
      k++;
     }
     while(j<=n2-1)
     {
      A[k]=R[j];
      j++;
      k++;
     }
    delete[]L;
    delete []R;
    }

    void MergeSort(int *A,int p, int r)
    {
     if(p<r)
     {  int q;
         q=(p+r)/2;
      MergeSort(A,p,q);
      MergeSort(A,q+1,r);
      Merge(A,p,q,r);
     }
    }

  • 相关阅读:
    线性筛2 筛约数个数
    背包板子
    线段树(指针板子)
    10.11 模拟赛(QBXT国庆Day3)
    10.6 体育成绩统计
    10.5 T3 DDP BZOJ 4712
    10.2模拟赛总结
    线性筛1
    CF165D Beard Graph
    2019 CSP-S第一轮(hsyz半日游)
  • 原文地址:https://www.cnblogs.com/finallyliuyu/p/1543664.html
Copyright © 2011-2022 走看看