//两有序数组按序列合并
#include<stdio.h>
int main()
{
int a[3]={1,3,5};
int b[4]={2,4,6,8};
int in=0,i=0,j=0,n=3,m=4,c[7];
while(i<n&&j<m)//o(n)
{
if(a[i]<=b[j])
c[in++]=a[i++];
if(a[i]>b[j])
c[in++]=b[j++];
}
while(i<n){
c[in++]=a[i++];
}
while(j<m)
c[in++]=b[j++];
for(int z=0;z<n+m;z++)
printf("%d ",c[z]);
}
//求数组两组数相加为M(非一个个扫描)o(n)
#include<stdio.h>
int main()
{
int a[8]={1,2,3,4,5,6,7,8};
int m=7;
int i=0,j=7;
while(i<j)
{
if(a[i]+a[j]==m)
{printf("%d %d\n",i,j);
i++;
j--;
}
else if(a[i]+a[j]<m)
i++;
else
j--;
}
}
12-23
09-11
327