C++ 合并两个有序数组 - 优化算法实现
您可以使用归并排序的思想来合并两个有序数组。\n\n首先,读取输入的N和N个正整数,并将其分为两个数组a和b。\n\n然后,声明一个新的数组c,长度为N。\n\n接下来,使用两个指针i和j来遍历数组a和b。\n\n比较a[i]和b[j]的大小,将较小的数放入数组c,并将对应的指针后移一位。\n\n重复上述步骤直到其中一个数组遍历完毕。\n\n将剩余的数组元素依次放入数组c。\n\n最后,输出数组c中的元素。\n\n下面是一种实现方式:\n\ncpp\n#include <iostream>\nusing namespace std;\n\nint main() {\n int N;\n cin >> N;\n \n int* a = new int[N];\n int* b = new int[N];\n \n for(int i = 0; i < N; i++) {\n cin >> a[i];\n }\n \n for(int i = 0; i < N; i++) {\n cin >> b[i];\n }\n \n int* c = new int[2 * N];\n int i = 0, j = 0;\n \n for(int k = 0; k < 2 * N; k++) {\n if(i < N && (j >= N || a[i] <= b[j])) {\n c[k] = a[i];\n i++;\n } else {\n c[k] = b[j];\n j++;\n }\n }\n \n for(int k = 0; k < 2 * N; k++) {\n cout << c[k] << " ";\n }\n \n delete[] a;\n delete[] b;\n delete[] c;\n \n return 0;\n}\n\n\n希望对您有帮助!
原文地址: https://www.cveoy.top/t/topic/pKTm 著作权归作者所有。请勿转载和采集!