两升序数组
int a[10]={2,5,6,7,9,10,15,17,20,21};
int b[10]={12,14,16,17,19,22,25,27,28,30};
合并为有序数组后:
代码实现:
#include<stdio.h>
int main(void)
{
int a[10]={2,5,6,7,9,10,15,17,20,21};
int b[10]={12,14,16,17,19,22,25,27,28,30};
int c[20];
int i,t,j;
t=j=0;
for(i=0;i<20;)//可以保证c只有20个元素
{
while(((a[t]<=b[j])||(j==10))&&t<=9)
{
c[i]=a[t++];
printf("%d ",c[i++]);
}
while(((b[j]<=a[t])||(t==10))&&j<=9)
{
c[i]=b[j++];
printf("%d ",c[i++]);
}
}
}
注意:
- 外层循环保证i<20使c只有二十个元素并不能让i再自增
- a数组的元素加入到新数组的条件是,a[t]<=b[j] 或b数组已经全部放入前提是t小于10
- b数组的元素加入到新数组的条件是,a[t]>=b[j] 或a数组已经全部放入前提是j小于10