int coursesMAX_COURSESMAX_COURSES = 0 1 1 1 1 数学课程的先修课程 0 0 1 1 1 物理课程的先修课程 0 0 0 1 1 化学课程的先修课程 0 0 0 0 1 生物课程的先修课程 0 0 0 0 0 英语课程的先修课程; void topologicalSortint coursesMAX_COURSE
该代码实现了拓扑排序算法。拓扑排序是一种对有向无环图进行排序的算法。在这个代码中,courses数组表示了课程之间的先修关系,0表示没有先修课程,1表示有先修课程。
代码中的topologicalSort函数实现了拓扑排序的主要逻辑。它首先通过计算每个课程的入度,得到了一个数组inDegree,用于记录每个课程的入度。然后,将入度为0的课程入队,并进行拓扑排序。在拓扑排序的过程中,每次取出队列中的一个课程,输出该课程,并更新与该课程相关的课程的入度。如果某个课程的入度变为0,将其入队。最后,当队列为空时,拓扑排序完成。
在主函数中,调用topologicalSort函数进行拓扑排序,并输出排序结果。
该代码的时间复杂度为O(n^2),其中n为课程的数量,因为需要通过两层循环来计算每个课程的入度。空间复杂度为O(n),需要两个数组inDegree和queue来存储数据。
原文地址: http://www.cveoy.top/t/topic/hWJ7 著作权归作者所有。请勿转载和采集!