今天分享的是一道牛客网上面的题目,链接在下面
有序序列合并
这道题做法有很多,最简单的是合并一起,然后用排序就行了,今天将一个最高效的办法,思路是两个数组第一项进行比较,小的先输出,输出的那个数组的下标往后移动,然后再进行比较,如果是另一个数组小,那先输出那个,然后那个数组下标往后移动,依次这样,就能把两个数组合并进行输出了。
#include<stdio.h>
int main()
{int arr1[1000];int arr2[1000];int n = 0;int m = 0;scanf("%d %d", &n, &m);int i = 0;for (i = 0; i < n; i++){scanf("%d ", &arr1[i]);}for (i = 0; i < m; i++){scanf("%d ", &arr2[i]);}int j = 0;i = 0;while (i < n && j < m){if (arr1[i] > arr2[j]){printf("%d ", arr2[j]);j++;}else{printf("%d ", arr1[i]);i++;}}if (i == n){for (; j < m; j++){printf("%d ", arr2[j]);}}else{for (; i < n; i++){printf("%d ", arr1[i]);}}return 0;
}
这就是今天代码分享,主要是觉得这个思路还行,就分享出来了,文章质量不是特别好,谢谢大家!!!