題目表述:給定兩個排序後的數組A和數組B,其中A的末端有足夠的緩衝空間容納B。編寫一個方法,將B合併入A並排序數組
#include<stdio.h> void combine(int *a,int *b); int len(int *a); int main() { int a[100]={1,4,9,11,13}; int b[4]={3,7,20}; int n=len(a)+len(b); int i; combine(a,b); for(i=0; i<n; i++) { printf("%d ",a[i]); } return 0; } void combine(int *a,int *b) { int current=len(a)+len(b)-1;//記錄合併和數組的最後一個下標 int p1=len(a)-1; int p2=len(b)-1; while(current!=0) { if(a[p1]>b[p2]) { a[current]=a[p1]; p1--; } else { a[current]=b[p2]; p2--; } current--; } } int len(int *a) { int i=0; while(a[i]!='\0') { i++; } return i; }