日期:2014-05-20  浏览次数:20635 次

求处理数据的算法
表 table1中有N条数据,现在我设置一个基数:cardinal 如 50,设置一个频率 frequency 如 20。当我从table1表中查询数据时,如果数据数量小于或等于基数cardinal,查询结果包含全部数据;如果数据量大于基数 cardinal ,且每多出frequency (频率)条数据就随机从查询结果集中删除1条数据,比基数cardinal 多出 2 * frequency(2倍frequency) 条数据就随机从查询结果集中删除2条数据,依此类推,多出M倍就随机从查询结果集中删除M条数据。
求此题的解决算法,SQL语句或者JAVA算法都行~!请各位大侠赐教,谢谢!

------解决方案--------------------
这个应该不难啊。
int count=0;
while(rs.next()){
count++;
if(count<=cardinal){
list.add(结果);
}
else{
if((count-cardinal)%frequency==0){
list.add(结果);
list.remove(Math.abs(new Random().nextInt())/list.size());//有待你博弈,删所有的,还是删刚查的。
}
}
}
------解决方案--------------------
(count-cardinal)%frequency (count>50)
就产生这么多次随机数,每次都删除那行记录
------解决方案--------------------
1楼程序,还要加上漏掉的结果。这些算是伪代码吧。