目录

  • 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.简单选择排序

简单选择排序操作方法是:第一趟,从n个记录中找出关键字最小的记录与第一个记录交换;第二趟,从第二个记录开始的n-1个记录中再选出关键字最小的记录与第二个记录交换;如此,第i趟,则从第i个记录开始的n-i+1个记录中选出关键字最小的记录与第i个记录交换,直到整个序列按关键字有序。

时间复杂度为O(n2)

简单选择排序是不稳定的排序方法

2.堆排序

堆排序是直接选择排序法的改进,是利用堆来进行排序的方法。堆是一种特殊的完全二叉树,如果该完全二叉树中每一个结点的值均大于或等于它的两个子结点的值,称其为大顶堆(或大根堆);如果该完全二叉树中每一个结点的值均小于或等于它的两个子结点的值,称其为小顶堆(或小根堆)。

堆排序的基本步骤是:

1)把用数组存储的n个待排序数据,看成一棵完全二叉树的顺序存储形式,并对这棵完全二叉树进行一系列的比较交换,并将其建成堆。

2)将堆顶数据和堆中最后一个数据交换,然后将堆中最后一个记录脱堆。

3)由于(2)步的交换,破坏了原有的堆结构,应将其不断向下交换,直到剩余的待排序数据重新调整成一棵堆。

4)重复(2)和(3)两步,直到待排序数据只剩一个为止,此时所有数据已排序完毕。