我想为学生注册软件建模以下情况。在我的模型中,我有一组学生,每个学生最多可以参加四门课程,每门课程最多可以有三个等级。
我决定使用三个数组的模式,如下所示:
Students[]---->Courses[]---->Grades[]
所以我有一系列学生,每个学生都有一系列课程,每门课程都有一系列成绩。
问题是当我想列出学生时,我会有类似的东西:
for i=1 to Students.length() //read students
for each student i read courses c
for each courses c read grades
有没有办法避免这种嵌套?我主要使用Java进行编码
由于
答案 0 :(得分:5)
这不是 O(n ^ 3)循环,它是 O(n)循环。其中 n 是您录制的成绩数。
有3个nexted循环并不意味着你有 O(n ^ 3),除非所有3个循环遍历相同的n
您的时间复杂度可以说是 O(s * c * g)其中
由于 c 的上限为4而 g 的上限为3,因此 O(s * 4 * 3)等于<强> O(S)强>
这就是你有多少数据。
如果你真的打算为所有学生处理所有成绩那么你就很难有比存储复杂性更好的时间复杂性。