C ++中两个排序数组的第K个元素

在本教程中,我们将编写一个程序,该程序从两个排序数组的合并数组中找到第k个元素。

让我们看看解决问题的步骤。

  • 初始化两个排序的数组。

  • 初始化一个大小为m + n的空数组。

  • 将两个数组合并到新数组中。

  • 从合并数组返回k-1元素。

示例

让我们看一下代码。

#include <iostream>

using namespace std;

int findKthElement(int arr_one[], int arr_two[], int m, int n, int k) {

   int sorted_arr[m + n];

   int i = 0, j = 0, index = 0;

   while (i < m && j < n) {

      if (arr_one[i] < arr_two[j]) {

         sorted_arr[index++] = arr_one[i++];

      }else {

         sorted_arr[index++] = arr_two[j++];

      }

   }

   while (i < m) {

      sorted_arr[index++] = arr_one[i++];

   }

   while (j < n) {

      sorted_arr[index++] = arr_two[j++];

   }

   return sorted_arr[k - 1];

}

int main() {

   int arr_one[5] = {1, 3, 5, 7, 9}, arr_two[5] = {2, 4, 6, 8, 10};

   int k = 7;

   cout << findKthElement(arr_one, arr_two, 5, 4, k) << endl;

   return 0;

}

输出

如果运行上面的代码,则将得到以下结果。

7

以上是 C ++中两个排序数组的第K个元素 的全部内容, 来源链接: utcz.com/z/347623.html

回到顶部