1、几种排序算法的总结
排序算法 最好 最坏 平均 空间复杂度稳定性 说明
选择排序 O(n2) O(n2) O(n2)O(1) 不稳定因为选择之后跟最前面的交换,存在跨越交换,所以不稳定
插入排序 O(n) O(n2) O(n2)O(1) 稳定
冒泡排序 O(n) O(n2) O(n2)O(1) 稳定如果设置一个标志位,检查一趟冒泡过程中有没有发生交换,如果没有则排序结束,那最好时间就是O(n)
堆排序 O(nlgn) O(nlgn) O(nlgn)O(1) 不稳定对选择排序的优化,同样存在跨越交换,不稳定
希尔排序 O(1) 不稳定 对插入排序的优化,步长从n/2到1每次除以2递减
快速排序 O(nlgn)O(n2) O(nlgn)O(nlgn) 不稳定对冒泡排序的优化,存在递归调用,所以空间复杂度是O(nlgn)
归并排序 O(nlgn) O(nlgn) O(nlgn)O(n) 稳定
2、dijastra算法和prim算法的比较
两种算法都是贪心算法的一种实现,dijkstra算法是设置一个数组记录到源点的最短距离,两个集合S和V,从V中找到到源点最短路径的点,然后更新数组;prim算法同样有两个集合S和V,还有一个表示边的集合,从V中找到到S中任意一点的最短的边,然后把该点放到S中,然后把该边记录下来。