在 C++ 中按排序顺序合并两个未排序数组。
问题陈述
编写一个函数,它接收两个未排序的数组,并将其合并到一个新的已排序数组中。
arr1[] = {10, 5, 7, 2} arr2[] = {4, 17, 9, 3} result[] = {2, 3, 4, 5, 7, 9, 10, 17}
算法
1. Merge two unsorted array into new array 2. Sort newly create array
示例
#include <iostream> #include <algorithm> #define SIZE(arr) (sizeof(arr) / sizeof(arr[0])) using namespace std; void mergeAndSort(int *arr1, int n1, int *arr2, int n2, int *result){ merge(arr1, arr1 + n1, arr2, arr2 + n2, result); sort(result, result + n1 + n2); } void displayArray(int *arr, int n){ for (int i = 0; i < n; ++i) { cout << arr[i] << " "; } cout << endl; } int main(){ int arr1[] = {10, 5, 7, 2}; int arr2[] = {4, 17, 9, 3}; int result[SIZE(arr1) + SIZE(arr2)]; cout << "First array: " << endl; displayArray(arr1, SIZE(arr1)); cout << "Second array: " << endl; displayArray(arr1, SIZE(arr2)); mergeAndSort(arr1, SIZE(arr1), arr2, SIZE(arr2), result); cout << "Merged and sorted array: " << endl; displayArray(result, SIZE(arr1) + SIZE(arr2)); return 0; }
输出
当您编译并执行上述程序时,它会生成以下输出 −
First array: 10 5 7 2 Second array: 10 5 7 2 Merged and sorted array: 2 3 4 5 7 9 10 17
广告