目录

  • 1 绪论
    • 1.1 数据结构的定义和基本术语
    • 1.2 数据的逻辑结构和存储结构
    • 1.3 算法和算法分析
  • 2 线性表
    • 2.1 线性表的定义及逻辑结构
    • 2.2 顺序存储结构
    • 2.3 链式存储结构
    • 2.4 应用:一元多项式的表示和相加
  • 3 栈和队列
    • 3.1 栈
    • 3.2 队列
  • 4 串
    • 4.1 资源
  • 5 数组
    • 5.1 数组
    • 5.2 广义表
  • 6 树和二叉树
    • 6.1 树的定义和基本术语
    • 6.2 二叉树
    • 6.3 遍历二叉树和线索二叉树
    • 6.4 树和森林
    • 6.5 哈夫曼树及其应用
  • 7 图
    • 7.1 图的定义和基本术语
    • 7.2 图的存储结构
    • 7.3 图的遍历
    • 7.4 图的应用
  • 8 查找
    • 8.1 查找的基本概念
    • 8.2 基于线性表的查找
    • 8.3 基于树的查找
    • 8.4 哈希表
  • 9 内部排序
    • 9.1 排序的定义和种类
    • 9.2 插入排序
    • 9.3 B-树和B+树
    • 9.4 交换排序
    • 9.5 选择排序
    • 9.6 归并排序和基数排序
  • 10 实验
    • 10.1 目的要求
      • 10.1.1 参考代码
归并排序和基数排序

1.归并排序

归并排序的基本思想是:将两个或两个以上的有序序列合并成一个新的有序序列。归并排序的基本步骤是:

1)将n个记录的待排序序列看成是由n个长度为1的有序子表组成。

2)将两两相临的子表归并为一个有序子表。

3)重复上述步骤,直至归并为一个长度为n的有序表。

2.基数排序

基数排序(Radix Sorting)是和前面所述各类排序方法完全不相同的一种排序方法。从前面的讨论可见。实现排序主要是通过关键字间的比较和移动记录这两种操作,而实现基数排序不需要进行记录关键字间的比较。基数排序是一种借助多关键字排序的思想来实现单关键字排序的内部排序算法。

3.各种排序算法的比较

1)平均的时间性能

时间复杂度为 O(nlogn) 快速排序、堆排序和归并排序。

时间复杂度为 O(n2) 直接插入排序、冒泡排序和简单选择排序。

当待排记录序列按关键字顺序有序时直接插入排序冒泡排序能达到O(n)的时间复杂度,快速排序的时间性能蜕化为O(n2) 

简单选择排序、堆排序和归并排序的时间性能不随记录序列中关键字的分布而改变。 

2)空间性能

这里指的是排序过程中所需的辅助空间大小。

所有的简单排序方法(包括:直接插入排序、冒泡排序和简单选择排序) 堆排序的空间复杂度O(1)快速排序为O(logn)归并排序所需辅助空间最多,其空间复杂度为 O(n) 

3排序方法的稳定性能

直接插入排序、冒泡排序、归并排序和基数排序都是稳定的排序方法。

希尔排序、快速排序、简单选择排序和堆排序都是不稳定的排序方法