当前位置:文档之家› 第10章排序(简)详解

第10章排序(简)详解


一般情况下,假设含n个记录的序列为
(R1, R2, …, Rn) 其相应关键字序列为
(K1, K2, …, Kn) 需确定一种排列,使关键字满重新排列为(Ri1, Ri2, …, Rin)的操作 称之为排序。
第 十
9.1 基本概念

/* 记录类型 */
typedef struct {
DataType r[maxsize+1];/* r[0]用作监视哨单元 */
int length ; /* 顺序表长度 */
} SqList;

十 按排序过程中依据的不同原则对内排方法分类:
章 排
(1)插入排序 (4)归并排序
序 (2)交换排序 (5)基数排序 (3)选择排序
章 排
➢插入排序的基本思想是:

每步将一个待排序的对象,按其关键码大小,插
入到前面已经排好序的一组对象的适当位置上,直到
对象全部插入为止。
边插入边排序,保证子序列中随时都是排好序的。
➢插入排序有多种具体实现算法: 1) 直接插入排序 2) 折半插入排序 3) 希尔排序

十 10.2.1 直接插入排序
❖ 外部排序: 排序的记录数量比较大,排序期间文件的全 部记录不能同时存放在计算机的内存里,排序过程中 需要不断地进行内存和外存之间的数据交换,则此类
排序称为~。
第 十
10.1 基本概念


序 排序的目的是什么? ——便于查找!
排序算法的好坏如何衡量?
• 时间效率——排序速度(即排序所花费的全部比较

11),请写出直接插入排序的中间过程序列。
【13】, 6, 3, 31, 9, 27, 5, 11
【6, 13】, 3, 31, 9, 27, 5, 11
【3, 6, 13】, 31, 9, 27, 5, 11
【3, 6, 13,31】, 9, 27, 5, 11
❖ 若是次关键字,排序的结果不唯一,因为等待排序 的记录序列中可能存在两个或两个以上关键字相等
的记录。若采用的排序方法使具有相同关键字的记
录在排序过程中相对次序不变,则称此排序方法是
稳定的,否则称为不稳定的。
第 十 章 排
序 ❖ 例如:假定一组记录为(15,67,23,15*,40), 其中关键字同为15的记录有两个。如果一种排
数据结构课程的内容
第 十
第10章 排序


序 学习要点
理解和熟悉各种排序的基本思想和过程
掌握各种排序算法的时间复杂度的分析
方法和结论
要求能根据各种排序方法的优缺点及不
同场合选择合适的排序方法
第 十 章
排 本章内容

10.1 基本概念
10.2 插入排序(直接插入、折半插入、表插入排 序、希尔排序)
#define maxsize 20 /* 设记录不超过20个 */
typedef int KeyType; /* 定义关键字为整数类型 */
typedef struct{
KeyType key; /* 关键字域 */
InfoType otherinfo; /* 其它数据域 */
} DataType;
有序表与无序表
一组记录按排序关键字的递增或递减次序排列得到
的结果被称之为有序表,相应地,把排序前的状态称
为无序表。
正序表与逆序表
若有序表是按排序码升序排列的,则称为升序表或
正序表,否则称为降序表或逆序表。


存储结构
章 排
在本章讨论的算法通常采用顺序存储结构,用一维
序 数组来实现,且记录按照关键字递增的顺序排列。

最简单的 排序法!
排 新元素插入到哪里?

在已形成的有序表中顺序查找,并在适当
位置插入,把原来位置上的元素向后顺移。
基本思想
整个排序过程为n-1趟插入,即先将序列 中第1个记录看成是一个有序子序列,然后从 第2个记录开始,逐个进行插入,直至整个序 列有序


例1:


关键字序列T=(13,6,3,31,9,27,5,
序方法使排序后的结果为(15,15*,23,40, 67),则称此方法是稳定的;若一种排序方法 使排序后的结果可能为
(15*,15,23,40,67) ,则称此方法是不稳 定的。

十 排序的时间复杂性


排序过程主要是对记录的排序码进行比较和记录
序 的移动过程。因此排序的时间复杂性可以用算法执行
中的数据比较次数及数据移动次数来衡量。
排 关键字是指在一个记录中可以标识该数据项的值,它是
序 排序运算的重要依据。
关键字的选取应根据需要而定,比如在学生档案表中, 可选择“学号”为关键字来识别学生,也可选择“年龄” 为关键字对学生排序。
学号 990001 990002 990003 990004 990005 990006
姓名 王晓佳 林一鹏
次数)
• 空间效率——占内存辅助空间的大小
• 稳定性——若两个记录A和B的关键字值相等,但排
序后A、B的先后次序保持不变,则称这种排序算法 是稳定的。


排序的稳定性


在待排序的序列中,关键字可以是记录的主关键
序 字,也可以是记录的次关键字,或是若干数据项的
组合。
❖ 由主关键字的定义可知,任何一个记录的无序序列 经排序后得到的结果是唯一的。
10.3 快速排序(起泡排序、快速排序)
10.4 选择排序(简单选择排序、树形选择排序、 堆排序)
10.5 归并排序
10.6 基数排序
10.7 各种内部排序方法的比较讨论
第 十
10.1 基本概念

排 排序(Sorting):是将数据元素(记录)的一个任意序
序 列,重新排列成一个按关键字有序的序列。
谢宁 张丽娟
周涛 李小燕
年龄 18 19 17 18 20 16
性别 男 男 女 女 男 女


排序的分类


按照排序过程中使用内、外存的不同,将排序方法
序 分为内部排序和外部排序。
❖ 内部排序:如果待排序的记录放在计算机内存中进行排 序,整个排序过程不需要访问外存便能完成,则此类
排序称为~。
➢ 内排序分类:插入排序、交换排序、选择排序、归 并排序和基数排序。
按内排过程中所需的工作量分类: (1)简单的排序方法,其时间复杂度为O(n×n) (2)先进的排序方法,其时间复杂度为O(nlogn); (3)基数排序,其时间复杂度为O(d×n)
排序算法的两种基本操作: (1)比较两个关键字的大小; (2)将记录从一个位置移至另一个位置;

十 10.2 插入排序
相关主题