使用計數排序在C++中查詢中位數和眾數
假設我們有一個大小為n的陣列,我們需要使用計數排序技術來查詢中位數和眾數。當陣列元素在有限範圍內時,此技術非常有用。例如,如果元素為{1, 1, 1, 2, 7, 1},則眾數為1,中位數為1.5。讓我們看看什麼是中位數和眾數:
- 中位數是在已排序的數字列表中的中間數字。
- 眾數是在列表中出現次數最多的元素。
為了得到中位數和眾數,我們必須遵循以下步驟:
- 假設輸入陣列的大小為n。
- 在將計數陣列的先前計數累加到下一個索引之前,先獲取計數陣列。
- 其中儲存的最大值的索引是給定資料的眾數。
- 如果存在多個最大元素,則可以選擇其中一個。
- 將值儲存到另一個名為**mode**的單獨變數中。
- 繼續進行計數排序的常規處理。
- 在已排序的陣列中,如果n是奇數,則中位數是已排序陣列中最中間的元素;如果n是偶數,則取中間兩個元素,然後求它們的平均值以獲得中位數。
- 將值儲存到另一個名為median的單獨變數中。
示例
#include <iostream>
using namespace std;
bool isRepresentedInDDigits(int num, int d, int base) {
if (d==1 && num < base)
return true;
if (d > 1 && num >= base)
return isRepresentedInDDigits(num/base, --d, base);
return false;
}
bool checkNumber(int num, int d) {
// Check for all bases one by one
for (int base=2; base<=32; base++)
if (isRepresentedInDDigits(num, d, base))
return true;
return false;
}
int main() {
int num = 8;
int dig = 2;
if(checkNumber(num, dig))
cout << "Can be represented";
else
cout << "Can not be represented";
}輸出
Can be represented
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP