一维数组(基础)——有序序列合并
任务描述
编写一个程序,将两个已排序的序列合并为一个有序序列并输出。
输入输出要求
输入: 三行,第一行包含两个整数 m 和 n,分别表示两个序列的长度。第二行和第三行分别包含 m 和 n 个整数,表示两个序列的元素。
输出: 一行,输出合并后的有序序列
代码实现
cpp
#include <stdio.h>
int main() {
int n, m;
scanf("%d %d", &n, &m);
int s1[n], s2[m];
for (int i = 0; i < n; i++) {
scanf("%d", &s1[i]);
}
for (int i = 0; i < m; i++) {
scanf("%d", &s2[i]);
}
int d[n + m];
int i = 0, j = 0, k = 0;
while (i < n && j < m) {
if (s1[i] < s2[j]) {
d[k++] = s1[i++];
} else {
d[k++] = s2[j++];
}
}
while (i < n) {
d[k++] = s1[i++];
}
while (j < m) {
d[k++] = s2[j++];
}
for (int i = 0; i < n + m; i++) {
printf("%d ", d[i]);
}
return 0;
}
总结
代码实现了两个有序序列的合并。通过这次练习,我加深了对数组操作和双指针技巧的理解。同时,我也意识到在编写代码时,清晰的逻辑和良好的代码风格是非常重要的。
编写一个程序,将两个已排序的序列合并为一个有序序列并输出。
输入输出要求
输入: 三行,第一行包含两个整数 m 和 n,分别表示两个序列的长度。第二行和第三行分别包含 m 和 n 个整数,表示两个序列的元素。
输出: 一行,输出合并后的有序序列
代码实现
cpp
#include <stdio.h>
int main() {
int n, m;
scanf("%d %d", &n, &m);
int s1[n], s2[m];
for (int i = 0; i < n; i++) {
scanf("%d", &s1[i]);
}
for (int i = 0; i < m; i++) {
scanf("%d", &s2[i]);
}
int d[n + m];
int i = 0, j = 0, k = 0;
while (i < n && j < m) {
if (s1[i] < s2[j]) {
d[k++] = s1[i++];
} else {
d[k++] = s2[j++];
}
}
while (i < n) {
d[k++] = s1[i++];
}
while (j < m) {
d[k++] = s2[j++];
}
for (int i = 0; i < n + m; i++) {
printf("%d ", d[i]);
}
return 0;
}
总结
代码实现了两个有序序列的合并。通过这次练习,我加深了对数组操作和双指针技巧的理解。同时,我也意识到在编写代码时,清晰的逻辑和良好的代码风格是非常重要的。
全部评论
相关推荐
点赞 评论 收藏
分享
2025-12-30 17:58
Conservatoire National Supérieur Musique et Dance de Lyon Java 喵_coding:项目太烂了外卖+点评啊 而且寒假实习差不多到时候了 hc没多少了 要实在想要找那只能投投大厂试试了
点赞 评论 收藏
分享
程序员牛肉:不用,你低估你学历的含金量了。
不用学微服务,重心放到juc,redis和mysql的八股上。然后准备两个简历项目。直接准备明年暑期就好。南京大学都算是国内比较顶尖的985了。明年暑期零实习也能被约面。不用太焦虑 点赞 评论 收藏
分享