算法学习(五)----基本排序算法总结
来源:互联网 发布:平板电脑mac地址查询 编辑:程序博客网 时间:2024/06/05 09:22
前几天学习几个基本的排序算法,下面来总结一下
算法分类
在维基百科上有排序算法的一张图,红线是我之前总结学习的。
从我们学习的排序算法中可以分为两类:简单排序有冒泡、选择、插入排序;改进算法有希尔、堆排序、归并排序和快速排序。
快速排序是冒泡的升级版,属于交换排序;希尔排序是直接插入排序的升级,属于插入排序类;堆排序相当于简单选择排序的升级,属于选择排序类。
算法动态图解
我自己做了几张这几种排序算法的动态图,以加深理解。原始图是从http://zh.visualgo.net 上截取的,我做成了动态的。
1.冒泡排序
2.简单选择排序
3.直接插入排序
4.归并排序
5.堆排序
6.快速排序
稳定性
算法稳定性是指相等键值的纪录维持相对次序。比如在序列中1、2号位置的元素具有相等的值,在排序前,1在2的前面,在排序后,1是否还在2的前面?尽管这是2个相等值的元素。稳定是指1、2的相对顺序不会发生变化,否则就是不稳定的算法。
从前面几个算法可以知道,稳定的排序算法有:冒泡、选择、插入、归并排序,而希尔、堆排序和快速排序都是不稳定的算法。
算法复杂度比较
冒泡排序(bubble sort)— O(n2)
插入排序(insertion sort)—O(n2)
归并排序(merge sort)—O(n log n);需要O(n)额外空间
选择排序(selection sort)—O(n2)
希尔排序(shell sort)—O(n log2 n)如果使用最佳的现在版本
堆排序(heap sort)—O(n log n)
快速排序(quick sort)—O(n log n)期望时间,O(n2)最坏情况;对于大的、随机数列表一般相信是已知最快的排序
- 算法学习(五)----基本排序算法总结
- 基本排序(五):基本排序算法的总结
- 排序算法总结(五)快速排序
- 基本排序算法总结
- 基本排序算法总结
- 基本排序算法总结
- 基本排序算法总结
- 基本排序算法总结
- 基本排序算法总结
- 算法学习(一)----基本排序算法
- 算法学习(排序五)堆排序
- 算法学习之排序算法(五)(快速排序)
- 常用排序算法总结(五)
- 基本排序算法总结(C/C++)
- 算法--排序算法的介绍与总结(五)
- 排序算法学习总结
- 排序算法学习总结
- 各种基本排序算法总结
- 终端实现回收机制
- CocoaPods的安装以及遇到的坑
- eclipse 快速打开当前文件所在目录
- CocoaPods的安装以及遇到的坑
- linux 添加用户、权限
- 算法学习(五)----基本排序算法总结
- 五种排序算法的JAVA 实现
- 选择排序的思想及其实现
- 记录贴~ 以后就在CSDN里记录自己学习android之旅
- enum与int、String之间的转换
- HDU 5900 QSC and Master (区间DP)
- 编写代码的艺术
- 规律-51nod-1305 Pairwise Sum and Divide
- SO_REUSEADDR 地址重用