求分班算法?

来源:百度知道 编辑:UC知道 时间:2024/06/07 17:58:24
我想按成绩总分分班,已经按降序排好了!有三个[班最好是根据输入]班,1,2,3名分别在1,2,3班,4,5,6名分别在3,2,1班,依此类推,编程应该怎样实现?算法应该怎样写啊?这个最好能不能在SQL数据库中直接用SQL语句实现,或者在Excel中怎么弄,请高手指点!谢谢!

先把名次算出来,这个应该不难。

然后Excel里假设名次已经在B2单元格,那么班级就应该是
=IF((MOD(B2,6))=1,1,IF((MOD(B2,6))=2,2,IF((MOD(B2,6))=3,3,IF((MOD(B2,6))=4,3,IF((MOD(B2,6))=5,2,IF((MOD(B2,6))=0,1))))))

SQL也可以
select 学生姓名, 名次,
case when mod(名次, 6) = 1 then 1
when mod(名次, 6) = 2 then 2
when mod(名次, 6) = 3 then 3
when mod(名次, 6) = 4 then 3
when mod(名次, 6) = 5 then 2
when mod(名次, 6) = 0 then 1
end
from 表格

用类似遗传算法,分班的目的就是实现各班的平均分平衡,所以每次计算就把平均分差别大的补到平均分差别小的地方去,一次次直到不能减小各班的分差为止。