题目表述:给定两个排序后的数组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; }
原文:https://www.cnblogs.com/jessie99/p/12358172.html