C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++の2つのソートされた配列のK番目の要素


このチュートリアルでは、2つのソートされた配列のマージされた配列からk番目の要素を見つけるプログラムを作成します。

問題を解決するための手順を見てみましょう。

  • 2つのソートされた配列を初期化します。
  • サイズm+nの空の配列を初期化します。
  • 2つのアレイを新しいアレイにマージします。
  • マージされた配列から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

結論

チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。


  1. C++を使用して2つのソートされた配列をマージします。

    問題の説明 与えられた2つのソートされた配列リスト。与えられた2つのソートされた配列を1つにマージする関数を記述します Arr1[] = {10,15, 17, 20} Arr2[] = {5, 9, 13, 19} Result[] = {5, 9, 10, 13, 15, 17, 19, 20} アルゴリズム 1. Traverse both array    1.1. If arr1[i] < arr2[j]       1.1.1. Add arr[i] to new array       1.1

  2. C++でソートされた順序で2つのソートされていない配列をマージします。

    問題の説明 ソートされていない2つの配列を受け取り、それらをソートされた順序で新しい配列にマージする関数を記述します。 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) (size