屌丝需要逆袭之学习C++和算法------合并排序

 1 #include <iostream>
 2 using namespace std;
 3 int Merge(int A[],int p,int q,int r);
 4 int Merge_Sort(int A[],int p,int r);
 5 int OutPut(int A[],int n);
 6 int main()
 7 {
 8     int A[]={2,3,5,4,1,6};
 9     Merge_Sort(A,1,6);
10     OutPut(A,6);
11     return 0;
12 }
13 
14 int Merge(int A[],int p,int q,int r)
15 {
16     int n1=q-p+1;
17     int n2=r-q;
18     int * L=new int[n1];
19     int * R=new int[n2];
20     for(int i=0;i<n1;i++)
21     {
22         L[i]=A[p+i-1];
23     }
24     for(int i=0;i<n2;i++)
25     {
26         R[i]=A[q+i];
27     }
28     for(int i=0,j=0,k=p-1;k<r;k++)
29     {
30         if(L[i]<=R[j]&&i<n1||j==n2)
31         {
32             A[k]=L[i];
33             i++;
34         }
35         else
36         {
37             A[k]=R[j];
38             j++;
39         }
40     }
41     delete []L;
42     delete []R;
43     return 0;
44 }
45 
46 int Merge_Sort(int A[],int p,int r)
47 {
48     if(p<r)
49     {
50         int q=(p+r)/2;
51         Merge_Sort(A,p,q);
52         Merge_Sort(A,q+1,r);
53         Merge(A,p,q,r);
54     }
55     return 0;
56 }
57 
58 int OutPut(int A[],int n)
59 {
60     for(int i=0;i<n;i++)
61     {
62         cout<<A[i]<<\n;
63     }
64     return 0;
65 }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。