常用排序算法性能分析
来源:互联网 发布:java输出九九乘法表 编辑:程序博客网 时间:2024/05/17 23:23
在平时写代码时比较常用的几种算法,性能表格如下:
排序法
平均时间
最坏
稳定
额外空间
冒泡排序
O(n^2)
O(n^2)
稳定
O(1)
选择排序
O(n^2)
O(n^2)
不稳定
O(1)
插入排序
O(n^2)
O(n^2)
稳定
O(1)
快速排序
O(nlogn)~ O(n)
O(n^2)
不稳定
O(nlogn)
堆排序
O(nlogn)
O(nlogn)
不稳定
O(1)
希尔排序
O(nlogn)
O(n^2)
不稳定
O(1)
归并排序
O(nlogn)
O(nlogn)
稳定
O(n)
我们可以把算法大致分为几类:
交换排序类:冒泡排序,快速排序;
插入排序类:插入排序,希尔排序;
选择排序类:选择排序,堆排序;
归并排序类:归并排序;
在进行开发时可以按照实际情况选择合适的算法进行使用。
注:
在学习过程中,发现有的书说简单选择排序是稳定的,有的书说是不稳定的。首先排序稳定的定义是:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。
通过这个定义,我们可以尝试对一个小序列如:2,5,5,3进行选择排序。
排序前:2,5,5*,3
排序后:2,3,5*,5
从上面的排序过程中,我们可以看到排序后元素5的相对次序发生了变化。在一般情况下简单选择排序是稳定的,但如果有多个相同元素,就会产生不稳定的情况,如上面所列举的例子,所以我认为简单选择排序是一般稳定,特殊情况不稳定。
0 0
- 常用排序算法性能分析
- 排序算法性能分析
- 排序算法性能分析
- 排序算法性能分析
- 排序算法性能分析
- 排序算法性能分析
- 排序算法性能分析
- 排序算法性能分析
- 常用排序算法的性能分析及应用场景
- 常用排序算法的性能分析及应用场景
- 常用排序算法的python实现和性能分析
- 常用的排序算法性能分析(1)—— 选择排序、插入排序、希尔排序
- 常用排序算法分析
- 常用排序算法分析
- 常用排序算法分析
- 常用排序算法性能比较
- 常用的排序算法性能分析(2)—— 归并排序、快速排序
- 各排序算法性能分析
- jdbc----CallableStatement
- 如同“旅居异国”的河北人
- Objective-C之run loop详解
- Java程序员如何拓展学习深度---第一篇
- BZOJ 4373 算术天才⑨与等差数列
- 常用排序算法性能分析
- 由两个栈组成的队列
- FOJ Problem 1075 分解素因子 (筛法求素数Problem 1075 分解素因子 Accept: 1650 Submit: 3102 Time Limit: 1000 mSe)
- Android studio 二维码扫描简单例子
- cocos2d-3.8.1 交叉编译 安卓版本
- 爱加密博客
- struts2简单入门之环境搭建立
- ListIterator
- 用栈来求解汉诺塔变形问题