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

หาจุดแบ่ง (Partition Point) ในอาร์เรย์ด้วย C++

ในบทช่วยสอนนี้ เราจะหาจุดแบ่ง (partition point) ในอาร์เรย์ที่องค์ประกอบทั้งหมดทางซ้ายของจุดแบ่งมีค่าน้อย และองค์ประกอบทั้งหมดทางขวามีค่ามาก

มาดูขั้นตอนในการแก้ปัญหา

  • เริ่มต้นอาร์เรย์
  • วนลูปผ่านอาร์เรย์
    • วนจาก 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

สรุป

หากคุณมีคำถามในบทช่วยสอนนี้ ให้ระบุในส่วนความคิดเห็น