Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

องค์ประกอบที่ K ของสอง Sorted Arrays ใน C++


ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่ค้นหาองค์ประกอบที่ 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

บทสรุป

หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น