数据结构的常用排序和稳定性分析
2013-11-17 09:01
148 查看
稳定性的定义:
排序前一个序列中,如果出现N个与关键字相同的数据,那么排序后仍然按照原先序列的排列顺序排列,就说这个算法是稳定的,反之就是不稳定的。通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。再简单形式化一下,如果Ai = Aj, Ai原来在Aj位置前,排序后Ai还是要在Aj位置前。这就是排序的稳定性
相关排序:
从平均时间性能而言,快速排序最佳,但快速排序在最坏情况下的时间性能不如堆排序和归并排序,而后两者相比较的结果,n较大时,归并排序所需时间少,但所需辅助存储量多。
直接插入,二分插入,冒泡,直接选择,平均时间和最坏情况,辅助空间,稳定性,基本都一样。
数据结构=逻辑结构+存储结构
线性和非线性属于逻辑结构
线性:数据元素之间一对一关系,就好链表一样有前驱,对应接下来一个的关系
非线性:,没有对应关系(集合)
一对多(树)
多对多(图,网)
排序前一个序列中,如果出现N个与关键字相同的数据,那么排序后仍然按照原先序列的排列顺序排列,就说这个算法是稳定的,反之就是不稳定的。通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。再简单形式化一下,如果Ai = Aj, Ai原来在Aj位置前,排序后Ai还是要在Aj位置前。这就是排序的稳定性
相关排序:
从平均时间性能而言,快速排序最佳,但快速排序在最坏情况下的时间性能不如堆排序和归并排序,而后两者相比较的结果,n较大时,归并排序所需时间少,但所需辅助存储量多。
直接插入,二分插入,冒泡,直接选择,平均时间和最坏情况,辅助空间,稳定性,基本都一样。
数据结构=逻辑结构+存储结构
线性和非线性属于逻辑结构
线性:数据元素之间一对一关系,就好链表一样有前驱,对应接下来一个的关系
非线性:,没有对应关系(集合)
一对多(树)
多对多(图,网)
相关文章推荐
- 数据结构常用排序(java)
- 【算法与数据结构必备】PHP常用排序算法:冒泡,快速排序,插入排序(一维数组)
- 【数据结构】常用比较排序算法(包括:选择排序,堆排序,冒泡排序,选择排序,快速排序,归并排序)
- 常用的算法和数据结构分析(查找和排序)
- 算法与数据结构-常用排序算法总结1-比较排序
- 【郝斌数据结构自学笔记】75-78_链式二叉树遍历具体程序演示_5种常用排序概述和快速排序详细讲解_再次讨论什么是数据结构_再次讨论到底什么是泛型
- 常用排序的实现方法(数据结构)
- 常用数据结构_排序_查找练习
- 【数据结构】常用比较排序算法(包括:选择排序,堆排序,冒泡排序,选择排序,快速排序,归并排序)
- 数据结构和算法分析之排序篇--归并排序(Merge Sort)和常用排序算法时间复杂度比较(附赠记忆方法)
- EKAlgorithms-常用数据结构Objective-C语言实现一数组排序
- 一步步学习数据结构和算法之常用排序效率分析及java实现
- 数据结构入门小结之排序
- 第8部分 常用的数据结构:数组
- 常用数据结构 可视化
- C++代码,数据结构-内部排序-选择排序-堆排序
- 数据结构第三周选择排序与快速排序差别
- Python常用数据结构描述
- 数据结构之排序6--冒泡排序
- 第八节 常用组件 之 Source Qualifier 使用排序端口