ในบทช่วยสอนนี้ เราจะค้นหาจุดพาร์ติชั่นในอาร์เรย์โดยที่องค์ประกอบทั้งหมดที่เหลือจนถึงจุดพาร์ติชั่นมีขนาดเล็ก และองค์ประกอบทั้งหมดทางด้านขวาจนถึงจุดพาร์ติชั่นนั้นใหญ่
มาดูขั้นตอนการแก้ปัญหากัน
-
เริ่มต้นอาร์เรย์
-
วนซ้ำบนอาร์เรย์
-
วนซ้ำจาก 0 ถึง I และตรวจสอบแต่ละค่าว่ามีค่าน้อยกว่าค่าปัจจุบันหรือไม่
-
วนซ้ำจาก I ถึง n และตรวจสอบแต่ละค่าว่ามีค่ามากกว่าค่าปัจจุบันหรือไม่
-
หากบอทตรงตามเงื่อนไขก็คืนค่ามา
-
-
พิมพ์จุดแบ่งพาร์ติชัน
ตัวอย่าง
มาดูโค้ดกันเลย
#include <bits/stdc++.h> using namespace std; int findPartitionElement(int arr[], int n) { for (int i = 0; i < n; i++) { int is_found = true; for (int j = 0; j < i; j++) { if (arr[j] >= arr[i]) { is_found = false; break; } } for (int j = i + 1; j < n; j++) { if (arr[j] <= arr[i]) { is_found = false; break; } } if (is_found) { return arr[i]; } } return -1; } int main() { int arr[] = { 4, 3, 5, 6, 7 }; cout << findPartitionElement(arr, 5) << endl; return 0; }
ผลลัพธ์
หากคุณรันโค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
5
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น