📌  相关文章
📜  C C++程序,用于中值两个大小相同的排序数组(1)

📅  最后修改于: 2023-12-03 15:13:44.910000             🧑  作者: Mango

中值排序数组

中值排序是一种将两个大小相同的排序数组合并成一个排序数组并找到该数组的中值的算法。该算法的时间复杂度为O(log n)。

思路
  1. 将两个数组合并。
  2. 对合并后的数组进行排序。
  3. 找到合并后数组的中值。
代码实现
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
    vector<int> nums;
    nums.reserve(nums1.size() + nums2.size());
    nums.insert(nums.end(), nums1.begin(), nums1.end());
    nums.insert(nums.end(), nums2.begin(), nums2.end());
    sort(nums.begin(), nums.end());
    int n = nums.size();
    if (n % 2 == 0) {
        return (nums[n / 2 - 1] + nums[n / 2]) / 2.0;
    } else {
        return nums[n / 2];
    }
}

int main() {
    vector<int> nums1 = {1, 2, 3};
    vector<int> nums2 = {4, 5, 6};
    double median = findMedianSortedArrays(nums1, nums2);
    cout << "The median is " << median << endl;
    return 0;
}
解释

以上代码采用了vector容器,将两个数组合并成一个数组,并按从小到大的顺序进行排序。通过计算数组长度n的中值,找到中值并返回。如果数组长度为偶数,则返回中间两个数的平均值。

结果输出为 "The median is 3.5"

总结

中值排序是一种高效的算法,可以将两个大小相同的排序数组合并成一个排序数组,并找到该数组的中值。以上代码使用了C++ STL中的vector容器和sort函数,实现了中值排序数组的功能。