《数据结构》课程教学课件(讲稿,C语言描述)第9章 排序

排序第9章扌数据结构(C语言描述)
第9章 排序 数据结构(C语言描述)

目录9.1 基本概念9.2插入排序9.3交换排序9.4选择排序9.5归并排序*9.6分配排序退出
目 录 9.1 基本概念 9.2 插入排序 9.3 交换排序 9.4 选择排序 9.5 归并排序 *9. 6 分配排序 退 出

9.1基本概念9.1.1排序介绍排序(Sorting)是数据处理中一种很重要的运算同时也是很常用的运算,一般数据处理工作25%的时间都在进行排序。简单地说,排序就是把一组记录(元素)按照某个域的值的递增(即由小到大)或递减(即由大到小)的次序重新排列的过程表9-1学生档案表学号年龄姓名性别男9900118王晓佳99002林一鹏19男99003谢宁17女9900418张丽娟女99005周涛20男女李小燕9900616
9.1 基本概念 9.1.1 排序介绍 排序(Sorting)是数据处理中一种很重要的运算, 同时也是很常用的运算,一般数据处理工作25%的 时间都在进行排序。简单地说,排序就是把一组记 录(元素)按照某个域的值的递增(即由小到大) 或递减(即由大到小)的次序重新排列的过程。 表9-1 学生档案表 学号 姓名 年龄 性别 99001 王晓佳 18 男 99002 林一鹏 19 男 99003 谢宁 17 女 99004 张丽娟 18 女 99005 周涛 20 男 99006 李小燕 16 女

例如,在表9-1中,若以每个记录的学号为关键字,按排序码年龄的递增(由小到大)排序,则所有记录的排序结果可简记为:(99006,16),(99003,17),(99001,18)(99004,18),(99002,19),(99005,20)};也可能为:((99006,16),(99003,17),(99004,18),(99001,18),(99002,19),(99005,20)};这两个结果都是表9-1按年龄的递增排序结果。若按排序码姓名来进行递增排序,则得到的排序结果为:((99006,李小燕),(99002,林一鹏),(99001,王晓佳),(99003,谢宁),(99004,张丽娟)(99005,周涛)当然,我们还可以按排序码性别来进行递增排序,在此不再作进一步的分析
例如,在表9-1中,若以每个记录的学号为关键字,按 排序码年龄的递增(由小到大)排序,则所有记录的排 序结果可简记为: {(99006,16),(99003,17),(99001,18), (99004,18),(99002,19),(99005,20)}; 也可能为: {(99006,16),(99003,17),(99004,18), (99001,18),(99002,19),(99005,20)}; 这两个结果都是表9-1按年龄的递增排序结果。若按排序 码姓名来进行递增排序,则得到的排序结果为: {(99006,李小燕),(99002,林一鹏),(99001, 王晓佳),(99003,谢宁),(99004,张丽娟), (99005,周涛)} 当然,我们还可以按排序码性别来进行递增排序,在此 不再作进一步的分析

9.1.2基本概念1.排序码(Sort Key)作为排序依据的记录中的一个属性。它可以是任何一种可比的有序数据类型,它可以是记录的关键字,也可以是任何非关键字。如上例中的学生年龄。在此我们认为对任何一种记录都可找到一个取得它排序码的函数Skey(一个或几个关键字的组合)。2.有序表与无序表一组记录按排序码的递增或递减次序排列得到的结果被称之为有序表,相应地,把排序前的状态称为无序表。3.正序表与逆序表若有序表是按排序码升序排列的,则称为升序表或正序表,否则称为降序表或逆序表。不失普遍性,我们一般只讨论正序表
9.1.2 基本概念 1.排序码(Sort Key) 作为排序依据的记录中的一个属性。它可以是任何一种 可比的有序数据类型,它可以是记录的关键字,也可以 是任何非关键字。如上例中的学生年龄。在此我们认为 对任何一种记录都可找到一个取得它排序码的函数 Skey(一个或几个关键字的组合)。 2.有序表与无序表 一组记录按排序码的递增或递减次序排列得到的结果被 称之为有序表,相应地,把排序前的状态称为无序表。 3.正序表与逆序表 若有序表是按排序码升序排列的,则称为升序表或正序 表,否则称为降序表或逆序表。不失普遍性,我们一般 只讨论正序表

4.排序定义若给定一组记录序列r,,2,…,I,,其排序码分别为s}'S2’…,Sn,将这些记录排成顺序为rk1,「k2,.…,「kn的一个序列R,满足条件ski≤Sk2≤..≤Skn,获得这些记录排成顺序为rp1,「p2,.,rn的一个序列R”,满足条件Spi≤Sp2≤...≤sn的过程称为排序。也可以说,将一组记录按某排序码递增或递减排列的过程称为排序。5.稳定与不稳定因为排序码可以不是记录的关键字,同一排序码值可能对应多个记录。对于具有同一排序码的多个记录来说,若采用的排序方法使排序后记录的相对次序不变,则称此排序方法是稳定的,否则称为不稳定的。在上例中(见表9-1,按年龄排序),如果一种排序方法使排序后的结果必为前一个结果,则称此方法是稳定的:若一种排序方法使排序后的结果可能为后一个结果,则称此方法是不稳定的
4.排序定义 若给定一组记录序列r 1 ,r 2 ,.,r n,其排序码分别为s 1, s 2 ,.,s n ,将这些记录排成顺序为r k1 ,r k2 ,.,r kn的一 个序列R’,满足条件s k1 ≤sk2 ≤ .≤skn,获得这些记录排成顺 序 为 r p1 , r p2 , . , r pn 的 一 个 序 列 R” , 满 足 条 件 s p1 ≤sp2 ≤ .≤spn的过程称为排序。 也可以说,将一组记录按某排序码递增或递减排列的过程, 称为排序。 5.稳定与不稳定 因为排序码可以不是记录的关键字,同一排序码值可能对应 多个记录。对于具有同一排序码的多个记录来说,若采用的 排序方法使排序后记录的相对次序不变,则称此排序方法是 稳定的,否则称为不稳定的。在上例中(见表9-1,按年龄排 序),如果一种排序方法使排序后的结果必为前一个结果, 则称此方法是稳定的;若一种排序方法使排序后的结果可能 为后一个结果,则称此方法是不稳定的

6内排序与外排序按照排序过程中使用内外存的不同将排序方法分为内排序和外排序。若排序过程全部在内存中进行,则称为内排序:若排序过程需要不断地进行内存和外存之间的数据交换,则称为外排序。内排序大致可分为五类:插入排序、交换排序、选择排序、归并排序和分配排序。本章仅讨论内排序。7.排序的时间复杂性排序过程主要是对记录的排序码进行比较和记录的移动过程。因此排序的时间复杂性可以算法执行中的数据比较次数及数据移动次数来衡量。当一种排序方法使排序过程在最坏或平均情况下所进行的比较和移动次数越少,则认为该方法的时间复杂性就越好,分析一种排序方法,不仅要分析它的时间复杂性,而且要分析它的空间复杂性、稳定性和简单性等
6.内排序与外排序 按照排序过程中使用内外存的不同将排序方法分为内排序和 外排序。若排序过程全部在内存中进行,则称为内排序;若 排序过程需要不断地进行内存和外存之间的数据交换,则称 为外排序。内排序大致可分为五类:插入排序、交换排序、 选择排序、归并排序和分配排序。本章仅讨论内排序。 7.排序的时间复杂性 排序过程主要是对记录的排序码进行比较和记录的移动过 程。因此排序的时间复杂性可以算法执行中的数据比较次 数及数据移动次数来衡量。当一种排序方法使排序过程在 最坏或平均情况下所进行的比较和移动次数越少,则认为 该方法的时间复杂性就越好,分析一种排序方法,不仅要 分析它的时间复杂性,而且要分析它的空间复杂性、稳定 性和简单性等

为了以后讨论方便,我们直接将排序码写成一个一维数组的形式,具体类型设为Elemtype,并且在没有声明的情形下,所有排序都按排序码的值递增排列。插入排序(直插排序、二分排序、希尔排序)交换排序(冒泡排序、快速排序)排序选择排序(直选排序、树型排序、堆排序)归并排序(二路归并排序、多路归并排序)分配排序(多关键字排序、基数排序)
为了以后讨论方便,我们直接将排序码写成一个一维数 组的形式,具体类型设为Elemtype,并且在没有声明的情 形下,所有排序都按排序码的值递增排列。 排序 插入排序(直插排序、二分排序、希尔排序) 交换排序(冒泡排序、快速排序) 选择排序 (直选排序、树型排序、堆排序) 归并排序(二路归并排序、多路归并排序) 分配排序 (多关键字排序、基数排序)

数据类型定义:#definemaxsize20typedef struct( int key,fRedtype;typedef structRedtype r[maxsize+1]int length;} Sqlist;
数据类型定义: #define maxsize 20 typedef struct { int key; }Redtype; typedef struct { Redtype r[maxsize+1]; int length; } Sqlist;

9.2插入排序9.2.1直接插入排序1:直接插入排序的基本思想直接插入排序(StraightInsertionSorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。2.直接插入的算法实现
9.2 插入排序 9.2.1直接插入排序 1.直接插入排序的基本思想 直接插入排序(Straight Insertion Sorting)的基本思想是:把 n个待排序的元素看成为一个有序表和一个无序表,开始时 有序表中只包含一个元素,无序表中包含有n-1个元素,排序 过程中每次从无序表中取出第一个元素,把它的排序码依次 与有序表元素的排序码进行比较,将它插入到有序表中的适 当位置,使之成为新的有序表。 2.直接插入的算法实现
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《数据结构》课程教学资源(知识点)数据结构各章重点难点.pdf
- 《数据结构》课程教学资源(试卷习题)十套数据结构试题及参考答案.pdf
- 《数据结构》课程教学资源(试卷习题)多套练习题及参考答案.pdf
- 《数据结构》课程实验指导书.pdf
- 《数据结构》课程授课教案(讲义,共十章).pdf
- 《计算机程序设计基础》课程PPT教学课件(C语言)第6章 指针进阶与内存空间管理 6.1 指针再认识.pptx
- 《计算机程序设计基础》课程PPT教学课件(C语言)第6章 指针进阶与内存空间管理 6.2 指针数组.pptx
- 《计算机程序设计基础》课程PPT教学课件(C语言)第6章 指针进阶与内存空间管理 6.5 main()函数的命令行参数.pptx
- 《计算机程序设计基础》课程PPT教学课件(C语言)第6章 指针进阶与内存空间管理 6.4 动态内存分配.pptx
- 《计算机程序设计基础》课程PPT教学课件(C语言)第6章 指针进阶与内存空间管理 6.3 函数指针.pptx
- 《计算机程序设计基础》课程PPT教学课件(C语言)第4章 数组和指针 4-7 字符数组的输入与输出格式符%c %s.pptx
- 《计算机程序设计基础》课程PPT教学课件(C语言)第4章 数组和指针 4-8 字符数组的输入与输出函数gets与puts.pptx
- 《计算机程序设计基础》课程PPT教学课件(C语言)第4章 数组和指针 4-6 字符数组的定义与初始化.pptx
- 《计算机程序设计基础》课程PPT教学课件(C语言)第4章 数组和指针 4-10 字符串函数——strcat.pptx
- 《计算机程序设计基础》课程PPT教学课件(C语言)第4章 数组和指针 4-11 字符串函数——strcpy.pptx
- 《计算机程序设计基础》课程PPT教学课件(C语言)第4章 数组和指针 4-12 字符串函数——strcmp.pptx
- 《计算机程序设计基础》课程PPT教学课件(C语言)第4章 数组和指针 4-9 字符串函数——strlen.pptx
- 《计算机程序设计基础》课程PPT教学课件(C语言)第4章 数组和指针 4-14 指向数组的指针定义与初始化.ppt
- 《计算机程序设计基础》课程PPT教学课件(C语言)第4章 数组和指针 4-15 指针变量的运算——赋值运算.pptx
- 《计算机程序设计基础》课程PPT教学课件(C语言)第4章 数组和指针 4-16 指针变量的运算——算术运算.pptx
- 《数据结构》课程教学课件(讲稿,C语言描述)第8章 查找.pdf
- 《数据结构》课程教学课件(讲稿,C语言描述)第6章 树.pdf
- 《数据结构》课程教学课件(讲稿,C语言描述)第7章 图.pdf
- 《数据结构》课程教学课件(讲稿,C语言描述)第4章 串.pdf
- 《数据结构》课程教学课件(讲稿,C语言描述)第2章 线性表.pdf
- 《数据结构》课程教学课件(讲稿,C语言描述)第5章 数组和广义表.pdf
- 《数据结构》课程教学课件(讲稿,C语言描述)第3章 栈和队列.pdf
- 《数据结构》课程教学课件(讲稿,C语言描述)第1章 绪论.pdf
- 《计算机组成原理》课程实验指导书.doc
- 《计算机组成原理》课程授课教案(讲稿,文字版).pdf
- 《计算机组成原理》课程教学资源(PPT课件)第七章 存储系统.ppt
- 《计算机组成原理》课程教学资源(PPT课件)第十章 输入输出系统(I/O).ppt
- 《计算机组成原理》课程教学资源(PPT课件)第五章 指令系统.ppt
- 《计算机组成原理》课程教学资源(PPT课件)第六章 中央处理部件(CPU).ppt
- 《计算机组成原理》课程教学资源(PPT课件)第一章 计算机系统概论.ppt
- 《计算机组成原理》课程教学资源(PPT课件)第二章 运算方法和运算部件(二进制运算).ppt
- 《计算机组成原理》课程教学资源(PPT课件)第三章 乘除及校验.ppt
- 《计算机组成原理》课程教学资源(PPT课件)第四章 主存储器.ppt
- 《物联网技术及应用》课程教学资料(参考资料)Publish/Subscribe Communication Systems - from Models to Applications.pdf
- 《物联网技术及应用》课程教学资料(参考资料)Toward the 6G Network Era - Opportunities and Challenges.pdf