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