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

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


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

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

ตัวอย่าง

Source Code:
#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