合并两个有序数组为一个有序数组(C++)

/*问题:有两个有序数组,合并成一个有序数组。分析:在内存中申请一个大小为两有序数组大小之和的新数组作为合并后的数组,从后往前把两个数组合并到新数组中。*/// Main.cpp – by Chimomo#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;#define MAX 1024// 合并长度为length1的有序数组array1和长度为length2的有序数组array2为一个新有序数组并返回之。int * MergeArray(int * array1, int * array2, int length1, int length2){int * mergedArray = new int[length1 + length2];if (array1 == NULL || array2 == NULL || (length1 + length2) > MAX){return NULL;}int p = length1 + length2 – 1;int p1 = length1 – 1;int p2 = length2 – 1;while (p1 >= 0 && p2 >= 0){if (array1[p1] > array2[p2]){mergedArray[p–] = array1[p1–];}else{mergedArray[p–] = array2[p2–];}}while (p1 >= 0){mergedArray[p–] = array1[p1–];}while (p2 >= 0){mergedArray[p–] = array2[p2–];}return mergedArray;}int main(){int array1[6] = { 1, 3, 7, 8, 9, 11 };int array2[3] = { 2, 5, 6 };int * mergedArray = MergeArray(array1, array2, 6, 3);for (int i = 0; i <= 6 + 3 – 1; i++){cout << *(mergedArray + i) << " ";}cout << endl;return 0;}// Output:/*1 2 3 5 6 7 8 9 11*/

,天下爱情,大抵如斯。

合并两个有序数组为一个有序数组(C++)

相关文章:

你感兴趣的文章:

标签云: