在C语言中,实现数组中重复次数最多的数值的算法可以应用于数据分析、数据挖掘、机器学习等领域。
下面代码是基于STM32平台进行编写的,可以获取一个数组中,重复次数最多的数值,并得到其重复的次数。
curvaluetimes为重复的次数,data为源数组,step为跨度,即对data[n]中,所有数值在data[n] - step ~ data[n] + step,都会计算一次重复次数,size为要计算数组的长度。
“ if((data[i] > 1.0f) && (data[i] < 200)){”为对所选数组元素的阀值过滤。
//寻找出现次数最多的数据
uint32_t curvaluetimes = 0;
float getArrMaxRepetData(float * data,float step,uint32_t size){
float curvalue = data[0],repetmax = 0;
uint32_t curtimes = 0,maxtimes = 0;
for(int i = 0;i < size;i++){
if((data[i] > 1.0f) && (data[i] < 200)){
if(fabs(curvalue - data[i]) <= step){
curtimes++;
}else{
if(maxtimes < curtimes){
maxtimes = curtimes;
repetmax = curvalue;
}
curvalue = data[i];
curtimes = 0;
}
}
}
if(curtimes >= size) {
repetmax = curvalue;
curvaluetimes = curtimes;
}
curvaluetimes = maxtimes;
return repetmax;
}