有一系列数值,需要求数值的范围,数值分组。比如价格,价格是不确定的。
比如手机的价格是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以上价格在一个范围内越多,这个范围分的越细。请大家指点相关算法,谢谢。  

解决方案 »

  1.   

    建一个类保存分组
    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或其它值)
    个数太少也可合并
      

  2.   

    找个统计的书,找一个合适的算法,用java实现一下
      

  3.   

    感谢guochun和bluesmile979的指点。抱歉,表达的意思有误,希望得到的是价格的范围,比如这些价格可以分为0-50,51-100,100-200,200-300,300以上