ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมเพื่อหาองค์ประกอบลำดับที่ 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
สรุป
หากมีข้อสงสัยเกี่ยวกับบทช่วยสอนนี้ สามารถถามได้ในส่วนความคิดเห็น