2015暑假复习——算法

来源:互联网 发布:指定变号发短信软件 编辑:程序博客网 时间:2024/06/01 08:08

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中,然后把该边记录下来。

0 0
原创粉丝点击