输入两个已经按从小到大顺序排列好的字符串,编写一个合并两个字符串的函数,使合并后的字符串,仍然是从小到 大排列。
输入:
两个已经排好顺序(升序)的两个字符串
输出:
一个合并在一起的有序(升序)的字符串
要求:
设计一个效率尽量高的算法,对每个字符串只扫描一遍就可以了。
如果采用先进行串连接,然后再进行排序的算法,则效率太低了。
#include<stdio.h>
#include<string.h>
#define N 200
int main()
{
char a[N],b[N],c[N];
int i,j;
char *achar,*bchar;
gets(a);
gets(b);
int flag=(strlen(a)+strlen(b));
achar=a;
bchar=b;
for(i=0;i<flag;i++)
{
if(*achar=='\0')
{
c[i]=*bchar;
bchar++;
}
else if(*bchar=='\0')
{
c[i]=*achar;
achar++;
}
else if(*achar<=*bchar)
{
c[i]=*achar;
achar++;
}
else
{
c[i]=*bchar;
bchar++;
}
}
c[flag]='\0';
puts(c);
return 0;
}