看你这样急,我就说说我的想法,(也许很差的。)
这是我在大三时, 在 DOS 下用 QBASIC 实现的一个排课算法。(也许不应该说是算法)
首先 学生的成绩中有几门是重要课程。(举例:这是为 N 门 )
然后,先分科(所有科)计算平均分 ( 是所有学生该科的成绩累加求平均分 )
再计算所有科所有学生的平均分。(是所有学生所有科的成绩累加求平均分 )
然后把学生排序,(这个序不能变)
再用多重循环从这个序列中抽出 N 个人
要使他们的 分科平均分 所有科平均分 与全局的 分科平均分与所有科平均分的差最小。
找出一组,就加入一个班。
然后再是第二个班,加入,第三个班加入,.... 第一个班,再加入第二组。....
这个方法的原理是用学生成绩的各科互补原则。
当时我这个算法还考虑了男女生比例等。
当时我用了一个星期写成的,现在叫我写。我还写不出来。
不过这个算法我还没有实现用过。效果我就不知道了。
Good Luck!