#include <iostream> #include <vector> // Function to merge two sorted arrays std::vector<int> mergeSortedArrays(const std::vector<int>& arr1, const std::vector<int>& arr2) { std::vector<int> mergedArray; int i = 0; // Pointer for the first array int j = 0; // Pointer for the second array // Compare elements of both arrays and insert them into the new array in sorted order while (i < arr1.size() && j < arr2.size()) { if (arr1[i] <= arr2[j]) { mergedArray.push_back(arr1[i]); i++; } else { mergedArray.push_back(arr2[j]); j++; } } // Insert the remaining elements from the first array while (i < arr1.size()) { mergedArray.push_back(arr1[i]); i++; } // Insert the remaining elements from the second array while (j < arr2.size()) { mergedArray.push_back(arr2[j]); j++; } return mergedArray; } int main() { // Example usage std::vector<int> arr1 {1, 3, 5, 7}; std::vector<int> arr2 {2, 4, 6, 8}; std::vector<int> mergedArr = mergeSortedArrays(arr1, arr2); // Output the merged array for (int i = 0; i < mergedArr.size(); i++) { std::cout << mergedArr[i] << " "; } return 0; }
时间: 2024-04-17 13:23:02 浏览: 141
#include <iostream>
这是一个用于合并两个已排序数组的函数。它将两个数组作为参数传入,并返回一个合并后的已排序数组。
在函数内部,我们使用两个指针i和j分别指向第一个和第二个数组的起始位置。我们比较arr1[i]和arr2[j]的值,将较小的值插入到新的合并数组mergedArray中,并将相应的指针向后移动一位。重复这个过程直到其中一个数组被完全遍历。
最后,我们检查剩下的元素,将它们插入到合并数组中。然后返回合并数组。
在主函数中,我们创建了两个已排序数组arr1和arr2,并调用mergeSortedArrays函数将它们合并在一起。最后,我们输出合并后的数组。
阅读全文