nlog2n
dijkstra算法是从一个顶点到其余各顶点的最短路径算法
Dijkstra算法是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。Dijkstra算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。 问题:有N个节点,M条边,求某节点到另一节点的最短距离 输入:先输入N(从0开始)代表N个节点,M条边,随后跟随N行,p1p2d,最后输入起始点st和终点ed 输出:求最短距离 例: 算法描述: ① 初始化,将图edge数组以及距离数组dis所有值置为极大量,表示不可访问,标记数组置为false 算法最多需要更新N个点才能得到最短路径,每次遍历节点也需要查询N遍其他节点与该节点的关系,所以空间复杂度应该是O(n^2);我们使用了N*N邻接表储存边,所以空间复杂度是O(n^2) 邻接矩阵实现简单,但是浪费很多空间,在稀疏图中就更加严重了
但时间复杂度仍为on^2
希尔排序:先将待排序列分组
但时间复杂度仍为O(n^2) 希尔排序:先将待排序列分组,对每组进行直接插入排序,增加数据量重新分组。 快速排序:冒泡排序的改良,先选择一个枢轴,把比他小的数放在前面,比他大的数放在后面,形成两个相对有序的子表,在子表中重复操作,直到最后剩下一个数 时间复杂度约为O(nlog2n) 简单选择排序:每次遍历a[i]到a[n],选出最小数字提前。 时间复杂度也为O(n^2) 树形选择排序:先对n个记录两两比较,再对其中n/2个较小记录比较,如此重复直至选出最小