C语言编写程序:合并两组正整数并去重排序
#include <stdio.h>
void mergeAndSort(int arr1[], int arr2[], int m, int n) {
int merged[m + n];
int i = 0, j = 0, k = 0;
while (i < m && j < n) {
if (arr1[i] < arr2[j])
merged[k++] = arr1[i++];
else if (arr2[j] < arr1[i])
merged[k++] = arr2[j++];
else {
i++;
j++;
}
}
while (i < m)
merged[k++] = arr1[i++];
while (j < n)
merged[k++] = arr2[j++];
int sorted[k];
int l, m;
sorted[0] = merged[0];
l = 1;
for (m = 1; m < k; m++) {
if (merged[m] != merged[m - 1])
sorted[l++] = merged[m];
}
for (m = 0; m < l; m++) {
printf('%d ', sorted[m]);
}
}
int main() {
int arr1[20], arr2[20];
int i = 0, j = 0;
// 输入第一组正整数
while (1) {
int num;
scanf('%d', &num);
if (num == -1)
break;
arr1[i++] = num;
}
// 输入第二组正整数
while (1) {
int num;
scanf('%d', &num);
if (num == -1)
break;
arr2[j++] = num;
}
mergeAndSort(arr1, arr2, i, j);
return 0;
}
程序功能:
- 从标准输入中输入两组正整数,每组以'-1' 作为输入结束符。
- 合并两组正整数,去重并按从小到大顺序排序输出。
输入格式:
第一组正整数:以空格分隔,以'-1' 结尾。 第二组正整数:以空格分隔,以'-1' 结尾。
输出格式:
合并后的正整数集,以空格分隔,从小到大排序,重复元素只输出一次。
示例:
输入:
5 1 4 32 872 9 5 32 872 -1
1 5 2 87 10 1 9 5 1 10 -1
输出:
2 4 10 32 87 872
代码解释:
mergeAndSort函数:- 合并两个数组,并去重,同时排序。
- 使用
merged数组存储合并后的所有元素。 - 使用
sorted数组存储去重排序后的结果。
main函数:- 输入两组正整数,分别存储在
arr1和arr2数组中。 - 调用
mergeAndSort函数进行合并、去重和排序。 - 输出排序后的结果。
- 输入两组正整数,分别存储在
代码优化:
- 将双引号改为单引号。
- 添加代码解释和示例。
- 添加描述和关键词。
- 优化标题和描述,使其更简洁易懂。
原文地址: https://www.cveoy.top/t/topic/o1yX 著作权归作者所有。请勿转载和采集!