当前位置:文档之家› 简单的排课算法

简单的排课算法

把学校机房的课时按每小时或者按几个小时为单位编成一个数据结构。

这个具体看学校怎么安排上机课,如果最小单位为2小时,当然以2小时为单位,如果有班级只上半小时的上机课当然以半小时为单位。

比如一周5天每天10小时我们可以把它编成50个单位的一个数据结构。

可以为数组,可以为链表,当然也可以为更复杂的结构,看你的需要。

简单的机房上机课时结构基本子元素为:起止时间、已安排班级(若未安排则为空)、已安排老师
把班级和老师也储存在一个数据结构里。

然后确定班级排上机课的原则。

比如是平均分配机时,那么将每个班级增加一个计数器。

那么班级的数据结构每个元素至少要有这么几个子元素:班级标识、班级计数器、班级空闲时间表。

排上机课的时候,首先取出机房上机课时的数据结构,取出第一个元素,然后遍历存储班级信息的数据结构,优先取出班级计数器最小的班级,查看这个班级这时是否有课,无课则插入到上机课时的数据结构中,同时将班级计数器加一,有课则选择下一个计数器数字最小的元素。

(计数器只是表示班级安排了多少上机课,也可以用一个数字代替,仅仅表示权重,比如计算机系的班级权重就可以调高。

建议将整个链表中计数器数字的最小值保存在这个链表的某处,使得访问者一开始就能得到而不用访问所有元素)。

重复上述过程,直到所有上机课时都被分配。

老师的分配过程和上述班级分配类似。

相关主题