数据结构
排序算法
快速排序最坏的情况啥时候出现?
这个答案还得看枢轴(pivot)的选择策略。在快速排序的早期版本中呢,最左面或者是最右面的那个元素被选为枢轴,那最坏的情况就会在下面的情况下发生啦:
1)数组已经是正序(same order)排过序的。
2)数组已经是倒序排过序的。
3)所有的元素都相同(1、2的特殊情况)
因为这些案例在用例中十分常见,所以这个问题可以通过要么选择一个随机的枢轴,或者选择一个分区中间的下标作为枢轴,或者(特别是对于相比更长的分区)选择分区的第一个、中间、最后一个元素的中值作为枢轴。有了这些修改,那快排的最差的情况就不那么容易出现了,但是如果输入的数组最大(或者最小元素)被选为枢轴,那最坏的情况就又来了。
图论
算法 | 数据范围 | 时间复杂度 |
---|---|---|
最短路径-dijstra-小根堆 | Graph with V vertices and E edges | O ( V + E ) log 2 E O(V+E)\log_2 E O(V+E)log2E |
最短路径-dijstra-无序数组 | Graph with V vertices and E edges | O ( V 2 ) O(V^2) O(V2) |
最短路径-bellman-ford | Graph with V vertices and E edges | O ( V E ) ) O(VE)) O(VE)) |
最短路径-spfa | Graph with V vertices and E edges | O ( V E ) ) O(VE)) O(VE)) |
最小生成树-PRIME | Graph with V vertices and E edges | O ( V 2 ) O(V^2) O(V2) |
最小生成树-Kruskal | Graph with V vertices and E edges | O ( E log 2 E ) O(E\log_2 E) O(Elog2E) |
参考文章:
https://blog.csdn.net/wumingqian_137229/article/details/53212319
https://blog.csdn.net/l975764577/article/details/39399077