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

หาองค์ประกอบลำดับที่ k ของอาร์เรย์เรียงลำดับสองอันที่รวมกันใน 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

สรุป

หากมีข้อสงสัยเกี่ยวกับบทช่วยสอนนี้ สามารถถามได้ในส่วนความคิดเห็น