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

หาองค์ประกอบในอาร์เรย์เรียงลำดับที่มีความถี่มากกว่าหรือเท่ากับ n/2 ด้วย C++

พิจารณาว่ามีอาร์เรย์ขนาด n อาร์เรย์นี้ถูกเรียงลำดับ มีองค์ประกอบหนึ่งที่มีความถี่มากกว่าหรือเท่ากับ n/2 โดยที่ n คือจำนวนองค์ประกอบในอาร์เรย์ ดังนั้นถ้าอาร์เรย์เป็น [3, 4, 5, 5, 5] ผลลัพธ์จะเป็น 5

ถ้าเราสังเกตประเภทอาร์เรย์นี้อย่างใกล้ชิด เราจะสังเกตได้ง่ายๆ ว่าตัวเลขที่มีความถี่มากกว่าหรือเท่ากับ n/2 จะอยู่ที่ดัชนี n/2 ด้วย ดังนั้นองค์ประกอบนี้สามารถหาได้ที่ตำแหน่ง n/2

ตัวอย่าง

#include <iostream> 
using namespace std; 

int higherFreq(int arr[], int n) {
    return arr[n / 2];
}

int main() {
    int arr[] = { 1, 2, 3, 4, 4, 4, 4, 4, 4, 5 };
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "The number " << higherFreq(arr, n) << " has occurred more than or equal to " << n << "/2 amount of times";
}

ผลลัพธ์

The number 4 has occurred more than or equal to 10/2 amount of times