DS-常用排序算法比较
来源:互联网 发布:模拟调音台软件 编辑:程序博客网 时间:2024/06/06 04:58
http://www.flatws.cn/article/program/shell/2011-06-25/32059.html
1.稳定性比较
插入排序、冒泡排序、二叉树排序、二路归并排序及其他线形排序是稳定的
选择排序、希尔排序、快速排序、堆排序是不稳定的
2.时间复杂性比较
插入排序、冒泡排序、选择排序的时间复杂性为O(n2)
其它非线形排序的时间复杂性为O(nlog2n)
线形排序的时间复杂性为O(n);
3.辅助空间的比较
线形排序、二路归并排序的辅助空间为O(n),其它排序的辅助空间为O(1);
4.其它比较
插入、冒泡排序的速度较慢,但参加排序的序列局部或整体有序时,这种排序能达到较快的速度。
反而在这种情况下,快速排序反而慢了。
当n较小时,对稳定性不作要求时宜用选择排序,对稳定性有要求时宜用插入或冒泡排序。
若待排序的记录的关键字在一个明显有限范围内时,且空间允许是用桶排序。
当n较大时,关键字元素比较随机,对稳定性没要求宜用快速排序。
当n较大时,关键字元素可能出现本身是有序的,对稳定性有要求时,空间允许的情况下。
宜用归并排序。
当n较大时,关键字元素可能出现本身是有序的,对稳定性没有要求时宜用堆排序。
5、算法思想简述:
(1)冒泡排序:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。冒泡排序是稳定的。算法时间复杂度O(n2)。
(2)选择排序:在要排序的一组数中,选出最小的一个数与第一个位置的数交换,然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。选择排序是不稳定的。算法复杂度O(n2)。
(3)插入排序:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。直接插入排序是稳定的。算法时间复杂度O(n2)。
(4)希尔排序:算法先将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行,在每组中再进行排序。当增量减到1时,整个要排序的数被分成一组,排序完成。希尔排序是不稳定的。
(5)快速排序:快速排序是对冒泡排序的一种本质改进。它的基本思想是通过一趟扫描后,使得排序序列的长度能大幅度地减少。在冒泡排序中,一次扫描只能确保最大数值的数移到正确位置,而待排序序列的长度可能只减少1。快速排序通过一趟扫描,就能确保某个数(以它为基准点吧)的左边各数都比它小,右边各数都比它大。然后又用同样的方法处理它左右两边的数,直到基准点的左右只有一个元素为止。- DS-常用排序算法比较
- 常用排序算法比较
- 常用排序算法比较
- 常用排序算法比较
- [DS&A]基本排序比较
- 常用排序算法性能比较
- 常用排序算法比较和使用环境
- 几种常用排序算法的比较
- 常用排序算法之性能比较
- 常用内部排序算法分析比较
- 基于比较的常用排序算法总结
- 常用排序算法性能比较总结
- 算法与数据结构-常用排序算法总结1-比较排序
- 常用排序算法总结(一) 比较算法总结
- 【算法之常用排序算法(二)】常用排序算法性能比较,及常见面试题
- 排序算法-比较排序
- 算法---比较排序算法
- 算法---比较排序算法
- 设置Eclipse的workspace路径
- 放烟花有覅ifyifyi
- sleep和wait的区别
- ARC下IBOutlet用weak还是strong
- RTLCOPYMEMORY与RTLMOVEMEMORY
- DS-常用排序算法比较
- Android注册设备管理器(获取超级管理员权限)
- 关于linux shell script if 语句特定参数的备忘
- OpenCV中对Mat里面depth,dims,channels,step,data,elemSize和数据地址计算的理解
- win 8/win 8.1 破解e信wifi共享成功---ShinePans
- Android 自动化测试框架-百度cafe
- 直方图的计算
- mysql查询优化相关技巧
- 文件系统Minifilter驱动(八)