1. 程式人生 > >c++有序列表的合並

c++有序列表的合並

++ 註意 style 元素 有序列表 std using cin clu

 1 #include <iostream>
 2 using namespace std;
 3 void merge(int a[],int b[],int n,int c[])
 4 {
 5     int i=0,j=0,k=0;
 6     while(i<n && j<n)
 7     {
 8         while(a[i]<=b[j]&& i<n && j<n)   //註意這裏和下面的相同
 9     {
10         c[k++]=a[i++];     //將較小的數放入c中,然後k+1,i+1,之後返回循環判斷條件是否成立,否則跳出循環執行下面的操作,將c的下一個賦值為b中的一個元素
11 } 12 while(a[i]>b[j] && i<n && j<n) //註意把i<n && j<n這個條件重復加上,因為在執行 的時候i,j可能已經到達5了,再繼續計算就出錯了 13 { 14 c[k++]=b[j++]; 15 } 16 } 17 while(i<n) 18 { 19 c[k++]=a[i++]; 20 } 21 while(j<n) 22 { 23 c[k++]=b[j++];
24 } 25 } 26 int main() 27 { 28 int n; 29 cin>>n; 30 int *a,*b,*c; 31 a=new int [n]; 32 b=new int [n]; 33 c=new int [2*n]; 34 for(int i=0;i<n;i++) 35 { 36 cin>>a[i]; 37 } 38 for(int i=0;i<n;i++) 39 { 40 cin>>b[i]; 41
} 42 merge(a,b,n,c); 43 for(int i=0;i<2*n;i++) 44 { 45 cout<<c[i]<<" "; 46 } 47 }

c++有序列表的合並