使用计数排序在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