考研数据结构各排序算法比较,配套《高分笔记》
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
归 3□
o(n log 2 n)
o(n log 2 n)
o( n )
归 2□ n 为序列中的元素数,d 为元素的关键位数,rd 为取值范围
稳定
较复杂
×
五、基数类排序
与初始序列:无关 ..
o(d (rd n)) o(d (rd n)) o(d (rd n))
o(rd )
稳定
较复杂
×
二、交换类排序
[通过一系列的交换动作,让 一个记录排到它最终的位置 上。][√:排序趟数和原始 序列有关] 注意:一趟决定最终位置 与初始序列:有关 ..
(4)冒泡排序
BubbleSort(); [最简单的交换排序]
√
o( n )
o(n log 2 n)
1□ 快
2
o( n )
o( n ) o( n 2 )
[两个或以上的有序序列合 并成一个新的有序序列] 与初始序列:无关 ..
n
(8)归并排序 (二路归并) (9)基数排序
[多关键字排序]
√:与比较次数无关 [注]:所需的内存量最大 两种实现方式: ①最高位优先; ②最 低位优先(重要)*:n 分配,rd 收集 如 930:d=3,rd=10
o(n log 2 n)
时间复杂度 平均情况 最好情况 最坏情况 说明(分析)
空间 复杂度
稳定性
复杂性
代码
o( n 2 ) o( n 2 )
o(n log 2 n)
2□ 些
o( n )
o( n )
o( n 2 ) o( n 2 )
只要记住 不用分析
o(1)
o(1)
稳定
简单
√
(2)折半插入排序
BinaryInsertSort();
只要记住 不用分析
2
o(1)
o(log 2 n)
1□ 快
稳定
简单
(5)快速排序
QuickSort();
高(效率低) 。就平均时间而言,快 速排序是所有排序算法中最好的。 比 较 次 数 为 o( n 2 ) , 交 换 次 数 为
o(n log 2 n)
ຫໍສະໝຸດ Baidu
不稳定
较复杂
√
1□ 快
不稳定 选 3□ 简单 √
三、选择类排序
[都选出一个最小(或最大) 的记录,把它和序列上的第 一个(或最后一个)记录交 换] 注意:一趟决定最终位置 简单选择与初始序列:无关 .. 堆排序与初始序列:有关 ..
(6)简单选择排序
SelectSort();
o( n)
如果记录较少,则不提倡用堆排序。 关键操作是将序列调整为堆. 【注】 :只有堆排序过程在排序过程 中得到最终的部分连续的有序子序 列。 N 个元素,m 路归并趟数: log m
第 8 章 排序 《数据结构高分笔记》2015.10.24/11.9 时间复杂度: O (1) O (log 2 n) O ( n) O ( n log 2 n) O ( n 2 ) O (n 3 ) ... O( n k ) O (2 n ) O ( n!) O (n n )
×
记忆口诀 外部排序
时间复杂度:快些 以 o( n log 2 n) 的速度归队 .. ..
空间复杂度:快 : o(log 2 n) 、归 : o( n ) . .
稳定性:考研复习痛苦啊,心情不稳定,快些选堆 朋友聊天吧。 .... [注]:外部排序的基本方法是:归并
考纲不做要求,了解。①归并排序法(1.初始归并段的生成、2.最佳归并树的建立)②败者树
稳定
简单
√
(3)希尔排序 [缩小增量排序]
使得序列变的更加有序;希尔排序-> 直接插入排序(效率更高) ①结束的条件是在一趟排序中没有 元素交换②有序比较:n-1 交换:0 逆序:比较、交换:n(n-1)/2 ☆数据基本有序的时候效率高 ☆序列越接近无序(有序) ,则效率
o(1)
不稳定 些 2□
较复杂
各种排序算法的复杂度和稳定性分析
类别
一、插入类排序
[在一个已经有序的序列中, 插入一个新的记录] 注意:最后一趟开始前,所 有元素可能都不在最终的位 置上。与初始序列:有关 ..
排序方式
(1)直接插入排序
InsertSort();
说明
直接与折半插入排序两者不同的可 能是:元素之间的比较次数 Low>high(折半查找结束), 插入位置 为小标为 high 记录之后.比较次数 与待排记录的初始排列状态无关。
o( n 2 )
o( n 2 )
o( n 2 )
配练习:第 10 章 11、29
o(1)
(7)堆排序
HeapSort(); [完全二叉树,大顶堆、 小顶堆。] 堆是一种数据结构
√
o(n log 2 n)
队 4□
o(n log 2 n)
o(n log 2 n)
o(1)
不稳定 堆 4□ 较复杂
四、归并类排序
o(n log 2 n)
o(n log 2 n)
o( n )
归 2□ n 为序列中的元素数,d 为元素的关键位数,rd 为取值范围
稳定
较复杂
×
五、基数类排序
与初始序列:无关 ..
o(d (rd n)) o(d (rd n)) o(d (rd n))
o(rd )
稳定
较复杂
×
二、交换类排序
[通过一系列的交换动作,让 一个记录排到它最终的位置 上。][√:排序趟数和原始 序列有关] 注意:一趟决定最终位置 与初始序列:有关 ..
(4)冒泡排序
BubbleSort(); [最简单的交换排序]
√
o( n )
o(n log 2 n)
1□ 快
2
o( n )
o( n ) o( n 2 )
[两个或以上的有序序列合 并成一个新的有序序列] 与初始序列:无关 ..
n
(8)归并排序 (二路归并) (9)基数排序
[多关键字排序]
√:与比较次数无关 [注]:所需的内存量最大 两种实现方式: ①最高位优先; ②最 低位优先(重要)*:n 分配,rd 收集 如 930:d=3,rd=10
o(n log 2 n)
时间复杂度 平均情况 最好情况 最坏情况 说明(分析)
空间 复杂度
稳定性
复杂性
代码
o( n 2 ) o( n 2 )
o(n log 2 n)
2□ 些
o( n )
o( n )
o( n 2 ) o( n 2 )
只要记住 不用分析
o(1)
o(1)
稳定
简单
√
(2)折半插入排序
BinaryInsertSort();
只要记住 不用分析
2
o(1)
o(log 2 n)
1□ 快
稳定
简单
(5)快速排序
QuickSort();
高(效率低) 。就平均时间而言,快 速排序是所有排序算法中最好的。 比 较 次 数 为 o( n 2 ) , 交 换 次 数 为
o(n log 2 n)
ຫໍສະໝຸດ Baidu
不稳定
较复杂
√
1□ 快
不稳定 选 3□ 简单 √
三、选择类排序
[都选出一个最小(或最大) 的记录,把它和序列上的第 一个(或最后一个)记录交 换] 注意:一趟决定最终位置 简单选择与初始序列:无关 .. 堆排序与初始序列:有关 ..
(6)简单选择排序
SelectSort();
o( n)
如果记录较少,则不提倡用堆排序。 关键操作是将序列调整为堆. 【注】 :只有堆排序过程在排序过程 中得到最终的部分连续的有序子序 列。 N 个元素,m 路归并趟数: log m
第 8 章 排序 《数据结构高分笔记》2015.10.24/11.9 时间复杂度: O (1) O (log 2 n) O ( n) O ( n log 2 n) O ( n 2 ) O (n 3 ) ... O( n k ) O (2 n ) O ( n!) O (n n )
×
记忆口诀 外部排序
时间复杂度:快些 以 o( n log 2 n) 的速度归队 .. ..
空间复杂度:快 : o(log 2 n) 、归 : o( n ) . .
稳定性:考研复习痛苦啊,心情不稳定,快些选堆 朋友聊天吧。 .... [注]:外部排序的基本方法是:归并
考纲不做要求,了解。①归并排序法(1.初始归并段的生成、2.最佳归并树的建立)②败者树
稳定
简单
√
(3)希尔排序 [缩小增量排序]
使得序列变的更加有序;希尔排序-> 直接插入排序(效率更高) ①结束的条件是在一趟排序中没有 元素交换②有序比较:n-1 交换:0 逆序:比较、交换:n(n-1)/2 ☆数据基本有序的时候效率高 ☆序列越接近无序(有序) ,则效率
o(1)
不稳定 些 2□
较复杂
各种排序算法的复杂度和稳定性分析
类别
一、插入类排序
[在一个已经有序的序列中, 插入一个新的记录] 注意:最后一趟开始前,所 有元素可能都不在最终的位 置上。与初始序列:有关 ..
排序方式
(1)直接插入排序
InsertSort();
说明
直接与折半插入排序两者不同的可 能是:元素之间的比较次数 Low>high(折半查找结束), 插入位置 为小标为 high 记录之后.比较次数 与待排记录的初始排列状态无关。
o( n 2 )
o( n 2 )
o( n 2 )
配练习:第 10 章 11、29
o(1)
(7)堆排序
HeapSort(); [完全二叉树,大顶堆、 小顶堆。] 堆是一种数据结构
√
o(n log 2 n)
队 4□
o(n log 2 n)
o(n log 2 n)
o(1)
不稳定 堆 4□ 较复杂
四、归并类排序