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