60.合并排序
成绩 | 0 | 开启时间 | 2022年11月7日 星期一 08:00 |
折扣 | 0.8 | 折扣时间 | 2022年11月27日 星期日 23:35 |
允许迟交 | 否 | 关闭时间 | 2022年12月4日 星期日 23:35 |
要求,将两个已经排好顺序的字符串合并到一个字符串里
main函数和函数的定义已经写好了,你只能使用指针来完成了。
/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int merge_sort(char *a,char *b,char *c);
int main(int argc, char *argv[]) {
char a[100];
char b[100];
char c[200];
gets(a);
gets(b);
merge_sort(a,b,c);
puts(c);
return 0;
}
/* PRESET CODE END - NEVER TOUCH CODE ABOVE */
测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 | |
---|---|---|---|---|---|
测试用例 1 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |
测试用例 2 | 以文本方式显示
| 以文本方式显示
| 1秒 | 64M | 0 |
int merge_sort(char* a, char* b, char* c)
{
while (*a && *b)/*等价于while(*a != '\0' && *b != '\0')*/
{
if (*a <= *b)/*a,b中元素一一比较,谁小就把谁放到c里*/
{
*c = *a;
a++;
}
else
{
*c = *b;
b++;
}
c++;
}
while (*a)/*以上循环的结果是必有一组元素全部比完,
只需把没必完的组的剩下元素输出即可*/
{
*c = *a;
a++;
c++;
}
while (*b)
{
*c = *b;
b++;
c++;
}
return 1;
}
注:此题与 45.合并字符串的思想一致,但明显使用指针显得非常简洁清晰。