有一系列数值,需要求数值的范围,数值分组。比如价格,价格是不确定的。
比如手机的价格是560, 870, 2000, 1450, 2500, 3300, 1800
这时希望的价格范围是0-1000, 1001-1500, 1501-2000, 2001以上而比如衣服的价格是45, 23, 100, 200, 320, 140, 750, 80, 26, 97, 21,
这是希望的价格范围是0-50,51-100,100-200,200-300,300以上价格在一个范围内越多,这个范围分的越细。请大家指点相关算法,谢谢。
比如手机的价格是560, 870, 2000, 1450, 2500, 3300, 1800
这时希望的价格范围是0-1000, 1001-1500, 1501-2000, 2001以上而比如衣服的价格是45, 23, 100, 200, 320, 140, 750, 80, 26, 97, 21,
这是希望的价格范围是0-50,51-100,100-200,200-300,300以上价格在一个范围内越多,这个范围分的越细。请大家指点相关算法,谢谢。
class A
{
分组范围;
元素数组;
}
先找到系列数值中的最大值max,先找最大分值
int i;
for(i=0;i++;)
{
int n=max/math.pow(10,i);
if(n<=30) //设为30表示可分为4~30组,若设为50表示可分为6~50组
break;
}
下面可用p=(int)math.pow(10,i)来分组, n=max/math.pow(10,i)为初始组数
数值个数count/n为平均每组个数avg
当一组的个数为avg的几倍时,对该组再分组(可用p/2或其它值)
个数太少也可合并