c_cpp 从两个排序的数组中获取第k个最小元素。数组中的前k个

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 从两个排序的数组中获取第k个最小元素。数组中的前k个相关的知识,希望对你有一定的参考价值。

int get_kth_element(int A[], int m, int B[], int n, int k) {
    if(m > n) return get_kth_element(B, n, A, m, k);
    if(m == 0) return B[k-1];
    if(k == 1) return min(A[0], B[0]);
    
    // divide k into two parts
    int i = min(k/2, m), j = k-i;
    if(A[i-1] == B[j-1]) return A[i-1];
    else if(A[i-1] < B[j-1])
        return get_kth_element(A+i, m-i, B, n, k-i);
    else 
        return get_kth_element(A, m, B+j, n-j, k-j);
}

以上是关于c_cpp 从两个排序的数组中获取第k个最小元素。数组中的前k个的主要内容,如果未能解决你的问题,请参考以下文章

如何在两个排序数组的并集中找到第 k 个最小的元素?

试图理解这个从两个排序数组中找到第 K 分钟的算法

数组中的第K个最大元素

在大小为 N 的数组的每 k 个元素中查找最小和第二小的元素

使用 max heapify 在数组中查找第 k 个最小元素的时间复杂度

最大/最小de K个数/第K个数