0
点赞
收藏
分享

微信扫一扫

【4月第四周学习记录】数据结构与算法王卓-第八章排序-归并排序与基数排序

Alex富贵 2022-04-26 阅读 20

目录

1. 归并排序

性能分析 

2. 基数排序

性能分析 

3. 总结表


1. 归并排序

思想

· 将两个或两个以上的序列归并为一个有序序列

· 在内部排序中,通常使用2-路归并排序

例:

归并树

树的深度与归并次数直接有关:

,树的深度应为log2n(向上取整)+1 

关键操作:如何合并两个有序序列成为一个有序序列?

思路

将二者的第一位元素相比较,若相同则一起移动到LC;若有大小之分,则将较小的移动到LC。依此顺序,直到任一个表为空,则将非空表内元素统一移动到LC。

细节传送门:

【2月第四周学习记录】数据结构与算法王卓-第二章线性表-线性表,顺序表,链表的合并(带例子)_Finale_R的博客-CSDN博客

性能分析 

  • 时间复杂度为O(nlog2n),空间复杂度为O(n), 需要一个额外的数组空间;
  • 归并排序属于稳定排序

2. 基数排序

PS:有点hash表的意思了 

例:

第一趟:按个位分配,收集(使个位有序)

第二趟:按十位分配,收集(使十位有序)

第三趟:按百位分配,收集(使百位有序)

性能分析 

  • 时间复杂度为O(k * (n + m)),空间复杂度为O(n + m), k为关键字的个数(执行次数),m为箱子的个数;
  • 基数排序属于稳定排序
  • 适用于知道关键字取值范围的情况;如果遇到关键字取值范围不确定,或无限大,则不适用

 对不同算法进行时间复杂度的比较,一个有趣的例子:

PS:果然最后登场的是大boss

3. 总结表

 

举报

相关推荐

0 条评论