归并排序(循序渐进中......)

分模块式实现

1.实现两个有序数组的合并;

//m,n分别为数组a,b的长度(有效值的个数),先要将已排好序的两个数组合并后赋给res数组

 1         int k=0,left,right;
 2     for(left=0,right=0;left<m&&right<n;k++)
 3     {
 4         if(a[left]<b[right])
 5             res[k]=a[left++];
 6         else
 7             res[k]=b[right++];    
 8     }
 9     
10     if(left<m){
11         for(int i=0;i<m-left;++i)
12             res[k+i]=a[left+i];
13     }
14     if(right<n){
15         for(int i=0;i<n-right;++i)
16             res[k+i]=b[right+i];
17     }
18     for(int i=0;i<m+n;++i)
19     {
20         cout<<res[i]<<' ';
21     }    

 

天涯犹在,不诉薄凉。
原文地址:https://www.cnblogs.com/Knight02/p/14687404.html