编写一个程序,输入两个包含 5 个元素的数组,先将两个数组升序排序,然 后将这两个数组合并成一个升序数组(合并排序)。
int a[5] = {0}, b[5] = {0}, c[10] = {0}; for(int i = 0; i < 5; i++) { a[i] = arc4random() % (30 - 10 + 1) + 10;//随机获取10 ~ 30之间的数 printf("%d ", a[i]); } printf(" "); for(int i = 0; i < 5; i++) { b[i] = arc4random() % (30 - 10 + 1) + 10;//随机获取10 ~ 30之间的数 printf("%d ", b[i]); } printf(" "); //冒泡排序 for (int i = 0; i < 5 - 1; i++) { for (int j = 0; j < 5 - 1 - i; j++) { if (a[j] > a[j + 1]) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } if (b[j] > b[j + 1]) { int t = b[j]; b[j] = b[j + 1]; b[j + 1] = t; } } } //输出升序排序后的数组a,b for(int i = 0; i < 5; i++) { printf("%d ", a[i]); } printf(" "); for(int i = 0; i < 5; i++) { printf("%d ", b[i]); } printf(" "); //将两个有序的数组合并为一个有序的数组 int i = 0;//用来表示数组a的下标 int j = 0;//用来表示数组b的下标 int k = 0;//用来表示数组c的下标 while (i < 5 && j < 5) { if (a[i] < b[j]) { c[k++] = a[i++]; } else { c[k++] = b[j++]; } } while (i < 5) { c[k++] = a[i++]; } while (j < 5) { c[k++] = b[j++]; } //输出数组c的元素 for (int m = 0; m < 10; m++) { printf("%d ", c[m]); } printf(" ");
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 【Mysql】求两个表(查询结果)的差集
- 下一篇: 两升序数组合并成一个升序数组