第3次课--顺序线性表的排序和查找

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《C语言与数据结构》
第3次课----顺序线性表的排序和查找 次课----顺序线性表的排序和查找 次课----
第5章 章
顺序表的存储结构(同前) 顺序表的存储结构(同前)
顺序表中数据的存储结构可描述如下: 顺序表中数据的存储结构可描述如下: #define MAXSIZE 100 typedef struct node { int key; /* 关键字域 */ …… /* 其它域 */ } Elemtype ; typedef struct sequence { Elemtype r[MAXSIZE] ; /* 数组域 */ int len ; /* 表长域 */ } Seq; 变量定义 Seq list;
《C语言与数据结构》
第3次课----顺序线性表的排序和查找 次课----顺序线性表的排序和查找 次课----
第5章 章
排序的方法
排序的方法有很多。内部排序主要有: 排序的方法有很多。内部排序主要有:
直接插入排序、折半插入排序、 插入 直接插入排序、折半插入排序、希尔排序
交换 冒泡排序、快速排序 冒泡排序、
第3次课----顺序线性表的排序和查找 次课----顺序线性表的排序和查找 次课----
第5章 章
学习内容 首页 越来越难了
《C语言与数据结构》
第3次课----顺序线性表的排序和查找 次课----顺序线性表的排序和查找 次课----
第5章 章
教案
教学主题 顺序线性表的排序和查找 通过本次课的学习,使学生掌握排序的基本 通过本次课的学习,使学生掌握排序的基本 教学目标 概念,顺序存储结构线性表的排序方法,以及在 概念,顺序存储结构线性表的排序方法, 排序基础上顺序线性表的查找。 排序基础上顺序线性表的查找。 1、冒泡排序和选择排序的基本思想 、 2、冒泡排序和选择排序的算法实现 、 3、顺序查找和折半查找的实现 、 排序和折半查找算法的实现
第3次课----顺序线性表的排序和查找 次课----顺序线性表的排序和查找 次课----
《C语言与数据结构》
第3次课----顺序线性表的排序和查找 次课----顺序线性表的排序和查找 次课----
第5章 章
查找举例
在学生成绩管理系统中, 在学生成绩管理系统中,假设全部学生的成绩可以如下表所 示存储在计算机中,表中每一行为一个记录, 示存储在计算机中,表中每一行为一个记录,学生的学号为记 录的主关键字。 录的主关键字。
第5章 章
有序顺序表的顺序查找
流程图
源程序
看源程序 (3_3) 运行程序 (3_3)
《C语言与数据结构》
第3次课----顺序线性表的排序和查找 次课----顺序线性表的排序和查找 次课----
第5章 章
与排序有关的基本概念
排序( ):又称分类, 排序(sorting):又称分类,指把一批杂乱无章 ):又称分类 的数据序列重新排列成有序序列 有序序列。 的数据序列重新排列成有序序列。 排序的依据:可以是记录的主关键字, 排序的依据:可以是记录的主关键字,也可以是次 关键字,甚至是若干数据项的组合。 关键字,甚至是若干数据项的组合。 排序的分类:按待排序的记录的数量多少, 排序的分类:按待排序的记录的数量多少,排序过 程中涉及的存储介质不同,排序方法分为两大类: 程中涉及的存储介质不同,排序方法分为两大类:内 部排序和外部排序。 部排序和外部排序。 内部排序:指待排序的记录存放在计算机内存之中。 内部排序:指待排序的记录存放在计算机内存之中。 外部排序:指待排序的记录数量很大, 外部排序:指待排序的记录数量很大,以至于内存 容纳不下而存放在外存储器之中, 容纳不下而存放在外存储器之中,排序过程需要访问 外存。 外存。
第5章 章
查找的方法
查找的方法很多。对于不同结构的查找表, 查找的方法很多。对于不同结构的查找表,需要采用不同的 查找方法。 查找方法。 就大的方向来分,查找方法可以分为静态查找表 静态查找表和 就大的方向来分,查找方法可以分为静态查找表和动态查找 表。 查找后,不影 查找后, 响表中的数据 查找后,表中 查找后, 数据会改变
《C语言与数据结构》
类型 定义
第3次课----顺序线性表的排序和查找 次课----顺序线性表的排序和查找 次课----
第5章 章
顺序表中顺序查找的实现
流程图
源程序
看源程序 (3_1) 运行程序 (3_1)
《C语言与数据结构》
第3次课----顺序线性表的排序和查找 次课----顺序线性表的排序和查找 次课----
顺序表可采取的查找方法:顺序查找法, 顺序表可采取的查找方法:顺序查找法,即:从顺序表的一 端开始,用给定值k逐个顺序地与表中各记录的关键字比较 逐个顺序地与表中各记录的关键字比较, 端开始,用给定值 逐个顺序地与表中各记录的关键字比较, 直到在表中找到某个记录的关键字与k值相等 表明查找成功; 值相等, 直到在表中找到某个记录的关键字与 值相等,表明查找成功; 否则,若查遍了表中的所有记录却仍未找到与k值相等的关链 否则,若查遍了表中的所有记录却仍未找到与 值相等的关链 字,表明查找失败。 表明查找失败。
《C语言与数据结构》
第3次课----顺序线性表的排序和查找 次课----顺序线性表的排序和查找 次课----
第5章 章
冒泡排序的基本思想
基本思路( 个数据进行排序): 基本思路(对n个数据进行排序): 个数据进行排序 个记录的关键字与第j-1个 (1)第一趟:让j取n-1至1,将第 个记录的关键字与第 个 )第一趟: 取 - 至 ,将第j个记录的关键字与第 记录的关键字比较 如果前者小于后者, 则把第j个记录与第 比较。 个记录与第j记录的关键字比较。如果前者小于后者, 则把第 个记录与第 1个记录进行交换,否则不进行交换。最后是第 个记录与第 个记录进行交换 个记录与第0 个记录进行交换,否则不进行交换。最后是第1个记录与第 个记录比较,关键字最小的记录就换到了数组下标为0的位置上 的位置上。 个记录比较,关键字最小的记录就换到了数组下标为 的位置上。 比较对换操作, (2)第二趟:让j取n-1至2,重复上述的比较对换操作,最终 )第二趟: 取 至 ,重复上述的比较对换操作 数组下标为1的位置上存放的是剩余的 条记录中最小的记录。 的位置上存放的是剩余的n-1条记录中最小的记录 条记录中最小的记录。 数组下标为 的位置上存放的是剩余的 个数据进行排序, (3)依次类推,对n个数据进行排序,共需要进行 n-1趟比较 )依次类推, 个数据进行排序 趟 对换。 对换。
《C语言与数据结构》
第3次课----顺序线性表的排序和查找 次课----顺序线性表的排序和查找 次课----
第5章 章
顺序表中顺序查找的改进算法
流程图
源程序
看源程序 (3_2)
运行程序 (3_2)
《C语言与数据结构》
第3次课----顺序线性表的排序和查找 次课----顺序线性表的排序和查找 次课----
第5章 章
顺序表中顺序查找算法的改进
如果允许在表的最后增设一个虚拟记录( 如果允许在表的最后增设一个虚拟记录(要查找的 增设一个虚拟记录 关键字值放入其中,只要不引起数组r的下标溢出即 关键字值放入其中,只要不引起数组 的下标溢出即 作为循环控制的边界 则算法中的循环控制条件 循环控制的边界, 可)作为循环控制的边界,则算法中的循环控制条件 可以减少一个,而得到较快的顺序查找算法。 可以减少一个,而得到较快的顺序查找算法。
若给定值为0223801,则可找到学生王丽,查找是成功的。 ,则可找到学生王丽,查找是成功的。 若给定值为 若给定值为0223912,由于表中没有关键字为0223912的记 若给定值为 ,由于表中没有关键字为 的记 则查找不成功。 录,则查找不成功。
《C语言与数据结构》
第3次课----顺序线性表的排序和查找 次课----顺序线性表的排序和查找 次课----
《C语言与数据结构》
教学重点
教学难点
第3次课----顺序线性表的排序和查找 次课----顺序线性表的排序和查找 次课----
第5章 章
主要内容
顺序线性表的查找 与查找有关的基本概念 顺序线性表中查找的实现 顺序线性表的排序 顺序线性表的排序 与排序有关的基本概念 冒泡排序 简单选择排序 有序顺序线性表的查找 有序顺序线性表的查找 顺序线性表的 有序顺序线性表中查找的实现—折半查找 有序顺序线性表中查找的实现 折半查找
《C语言与数据结构》
第3次课----顺序线性表的排序和查找 次课----顺序线性表的排序和查找 次课----
第5章 章
与查找有关的基本概念
列表: 同一类型的数据元素(或记录 构成的集合 列表:由同一类型的数据元素 或记录 构成的集合。 的数据元素 或记录)构成的集合。 关键字:数据元素的某个数据项 用它可以标识 某个数据项, 标识列表中的一 关键字:数据元素的某个数据项,用它可以标识列表中的一 个或一组数据元素。 个或一组数据元素。 如果一个关键字可以唯一标识列表中的一个数据元素, 如果一个关键字可以唯一标识列表中的一个数据元素,则称 其为主关键字 否则为次关键字 主关键字, 次关键字。 其为主关键字,否则为次关键字。当数据元素仅有一个数据项 时,数据元素的值就是关键字。 数据元素的值就是关键字。 查找:根据给定的关键字值,在列表中寻找 寻找与给定关键字值 查找:根据给定的关键字值,在列表中寻找与给定关键字值 该数据元素在列表中的位置 相同的数据元素, 返回该数据元素在列表中的位置。 相同的数据元素,并返回该数据元素在列表中的位置。 查找的结果:有两种,查找成功和查找失败。 查找的结果:有两种,查找成功和查找失败。 查找时涉及到的三类参量: 查找时涉及到的三类参量: ① 查找对象K(找什么 ; 查找对象 找什么); 找什么 输入参量 查找范围L(在哪找 在哪找); ② 查找范围 在哪找 ; 中的位置(查找的结果 ③ K在L中的位置 查找的结果 。 在 中的位置 查找的结果)。 输出参量
《C语言与数据结构》
第3次课----顺序线性表的排序和查找 次课----顺序线性表的排序和查找 次课----
第5章 章
顺序表的存储结构
顺序表中数据的存储结构可描述如下: 顺序表中数据的存储结构可描述如下: #define MAXSIZE 100 typedef struct node { int key; /* 关键字域 */ …… /* 其它域 */ } Elemtype ; typedef struct sequence { Elemtype r[MAXSIZE] ; /* 数组域 */ int len ; /* 表长域 */ } Seq; 变量定义 Seq list;
《C语言与数据结构》
第3次课----顺序线性表的排序和查找 次课----顺序线性表的排序和查找 次课----
第5章 章
冒泡排序举例
假定将数据按从小到大进行排序。对一组关键字( , , 假定将数据按从小到大进行排序。对一组关键字(42,38, 从小到大进行排序 64,91,14,25) 进行排序。 , , , ) 进行排序。
5 种
选择 简单选择排序、堆排序 简单选择排序、 归并 基数 本章 介绍
《C语言与数据结构》
第3次课----顺序线性表的排序和查找 次课----顺序线性表的排序和查找 次课----
第5章 章
冒泡排序
冒泡排序( ):根据记录的关键字大小 冒泡排序(bubble sort):根据记录的关键字大小, ):根据记录的关键字大小, 将相邻两个记录进行交换来实现排序的。 相邻两个记录进行交换来实现排序的。 进行交换来实现排序的 冒泡排序分:向上冒和向下冒两种。 冒泡排序分:向上冒和向下冒两种。 两种 接下来,我们以向上冒为例进行介绍。 接下来,我们以向上冒为例进行介绍。 向上冒为例进行介绍
《C语言与数据结构》
类型 定义
第3次课----顺序线性表的排序和查找 次课----顺序线性表的排序和查找 次课----
第5章 章
顺序表中冒泡排序的实现
ቤተ መጻሕፍቲ ባይዱ流程图
源程序
看源程序 (3_4) 运行程序 (3_4)
思考:外循环是否一定要进行n-1趟? 思考:外循环是否一定要进行 是否一定要进行 趟
《C语言与数据结构》
相关文档
最新文档