数据结构 18 【复习】广义表 | 各种内部排序 | 二叉排序树的平均查找长度 ASL

1 广义表

定义

题目

2 各种内部排序

排序算法的一般选择规则

内部排序的分类

1. 插入类排序 (Insertion Sorts)

这类排序的思想是将一个待排序的记录按其关键字的大小插入到前面已经排好序的子序列中 。

  • 直接插入排序:在序列"基本有序"或数据量较小时效率极高 。

  • 希尔排序 (Shell Sort):也称"缩小增量排序",是插入排序的一种更高效的改进版本。

2. 交换类排序 (Exchange Sorts)

通过比较两个记录的关键字,如果不满足次序要求(如逆序)则进行交换。

  • 冒泡排序 (Bubble Sort):最基础的交换排序。

  • 快速排序 (Quick Sort):采用分治法。虽然在某些情况下(如初始序列基本有序)不是最快的,但在平均性能上非常优越 。

3. 选择类排序 (Selection Sorts)

每一趟从待排序的记录中选出关键字最小(或最大)的记录,放置在已排序序列的最后 。

  • 简单选择排序:从头到尾扫描选最小项 。

  • 堆排序 (Heap Sort) :利用大顶堆或小顶堆结构进行筛选 。

  • 稳定性 :选择类排序通常是不稳定的 。

4. 归并类排序 (Merging Sorts)

将两个或两个以上的有序表组合成一个新的有序表 。

  • 二路归并排序:将序列不断二分,再两两合并。

5. 分配类排序 (Distribution Sorts)

不通过直接的关键字比较,而是根据关键字的位(如个位、十位)进行分配和收集。

  • 基数排序 (Radix Sort):按照位值的顺序(如从低位到高位)进行多轮排序。
排序类别 典型算法 稳定性 备注
插入类 直接插入、希尔 稳定 序列基本有序时表现优秀
交换类 快排、冒泡 不稳定 平均时间复杂度 O (n log2 n)
选择类 简单选择排序、堆排序 不稳定 空间复杂度低,适合海量数据
归并类 归并排序 稳定 时间复杂度始终为 O (n log2 n)
分配类 基数排序 稳定 适用于关键字位数较少的情况

3 二叉排序树的平均查找长度 ASL

二叉排序树(BST)的查找效率(平均查找长度 ASL)直接取决于树的高度。对于具有 N 个结点的二叉排序树:

  1. 最好情况(平衡状态):当二叉排序树接近完全二叉树或经过平衡处理(如 AVL 树)时,其高度约为 log2 N 的下取整加 1。在这种情况下,查找长度与 O (log2 N) 同阶,查找效率最高。

  2. 最坏情况(退化状态):如果插入的关键字序列是有序的(例如 1, 2, 3, 4, 5),构造出的二叉排序树会退化为一棵单支树(类似于一个线性链表)。此时,树的高度变为 N,查找长度也随之退化为 O (N),效率最低。

相关推荐
sunfdf20 小时前
知识学习场景下的智能应用实践大纲
学习
MartinYeung521 小时前
[论文学习]重新思考大型语言模型忘却目标:梯度视角与超越
人工智能·学习·语言模型
影视飓风TIM21 小时前
数据结构 | 链表超全笔记(单链表+双链表+高频算法题)
数据结构·笔记·链表
二哈赛车手21 小时前
新人笔记---最终版智能体图片分析完整方案,包括一些总结于经验,以及各种优化点讲解
java·笔记·spring·ai·springboot
_李小白21 小时前
【智能驾驶:视觉感知后处理 阅读笔记】Day4: 相机成像模型与畸变
笔记·数码相机
十月的皮皮21 小时前
C语言学习笔记20260615-有序升序序列合并
c语言·笔记·学习
JAVA面经实录91721 小时前
前端系统化学习计划表(含完整知识思维导图)
前端·学习
牛油果子哥q21 小时前
STL set与map底层精讲,红黑树适配原理、有序去重特性、迭代器遍历、API实战与面试核心考点全解
开发语言·数据结构·c++·面试
worilb1 天前
Spring Cloud 学习与实践(9):Gateway + JWT 统一鉴权
学习·spring cloud·gateway
MartinYeung51 天前
[论文学习]DP2Unlearning:高效且具保证的大型语言模型遗忘框架(基于差分隐私的 LLM Unlearning 方法)
学习·算法·语言模型