- 1、本文档共34页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计与数据结构 第15章 查找与排序 总体要求: 掌握查找与排序的基本概念; 掌握顺序查找和二分查找的算法; 掌握直接插入排序、简单选择排序、冒泡排序的算法; 学习重点: 查找的有关算法:顺序查找、折半查找; 常用的排序方法:插入排序、交换排序。 主要内容 15.1 基本概念 15.2 查找算法介绍 15.3 排序算法介绍 15.4 典型习题分析解答 15.1基本概念 15.1.1 查找的基本概念 查找表(Search Table) 是由同一类型的数据元素(或记录)构成的集合。 若对查找表只作前两种统称为“查找”的操作,则称此类查找表为静态查找表(Static Search Table)。若在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已存在的某个数据元素,则称此类表为动态查找表(Dynamic Search Table)。本章集中讨论静态查找表。????所谓“查找”即为在一个含有众多的数据元素(或记录)的查找表中找出某个“特定的”数据元素(或记录)。 ???? 关键字(Key) 是数据元素(或记录)中某个数据项的值,用它可以标识(识别)一个数据元素(或记录)。若此关键字可以唯一地标识一个记录,则称此关键字为主关键字(Primary Key)(对不同的记录,其主关键字均不同)。反之,称用以识别若干记录的关键字为次关键字(Secondary Key)。当数据元素只有一个数据项时,其关键字即为该数据元素的值。 查找(Searching) 根据给定的某个值,在查找表中确定一个其关键字等于给定值的记录或数据元素。若表中存在这样的一个记录,则称查找是成功的,查找的结果为给出整个记录的信息,或指示该记录在查找表中的位置;若表中不存在关键字等于给定值的记录,则称查找不成功,此时查找的结果可给出一个“空”记录或“空”指针。 15.1.2 排序的基本概念 ?排序(Sorting)是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列。 假设含n个记录的序列为 {R1,R2,…,Rn} ,若在排序后的序列中 Ri仍领先于Rj,则称所用的排序方法是稳定的;反之,若可能使排序后的序列中Rj领先于Ri,则称所用的排序方法是不稳定的。 由于待排序的记录数量不同,使得排序过程中涉及的存储器不同,可将排序方法分为两大类:一类是内部排序,指的是待排序记录存放在计算机随机存储器中进行的排序过程;另一类是外部排序,指的是待排序记录的数量很大,以致内存一次不能容纳全部记录,在排序过程中尚需对外存进行访问的排序过程。 15.2 查找算法介绍 15.2.1 顺序查找 顺序查找(Sequential Search)的查找过程为: 从表中最后一个记录开始,逐个进行记录的关键字和给定值的比较,若某个记录的关键字和给定值比较相等,则查找成功,找到所查记录;反之,若直至第一个记录,其关键字和给定值比较都不等,则表明表中没有所查记录,查找不成功。此查找过程可用下列算法描述。 【算法15.1】顺序查找的算法:????int Search_Seq(Sqlist ST,KeyType key) { ???//在顺序表ST中顺序查找其关键字等于key的数据元素。 //若找到,则函数值为该元素在表中的位置,否则为0。 ST.r[0].key = key; //0号单元作为监视哨???????? for( i=ST.length; !EQ (ST.r[i].key , key); --i ); //从后往前找???????????? return i; //找不到时,i为0????} // End of Search_Seq ?查找操作的性能分析: 15.2.2 折半查找 折半查找(BinarySearch)的查找过程是:先确定待查记录所在的范围(区间),然后逐步缩小范围直到找到或找不到该记录为止。(具体查找过程见第7章) 算法如下: ???//在有序表ST中折半查找其关键字等于key的数据元素。若找到,则函数值为该元素在表中的位置,否则为0。 【算法15.2】折半查找的算法: ? int binsrch(Sqlist L, int key) { int mid,low,high,find; low=1; high=L.length;find=0; /*置区间初值*/ while ((low=high) (!find)) { mid=(low+high)/2; /*求中点*/ if (k= = L.r[mid].key) find=1; /*已查到*/ else i
您可能关注的文档
- C程序设计简明教程(第二版) -王晓东及源代码 课件 第6章 数组.ppt
- C程序设计简明教程(第二版) -王晓东及源代码 课件 第8章指针2.PPT
- C程序设计简明教程(第二版) -王晓东及源代码 课件 第9章 结构体与共用体.PPT
- C程序设计简明教程(第二版) -王晓东及源代码 课件 第10章 位运算.ppt
- C程序设计简明教程(第二版) -王晓东及源代码 课件 第11章 文件.ppt
- C语言程序设计 -任正云 第3章顺序程序设计.ppt
- C语言程序设计 -任正云 第4章选择结构程序设计.ppt
- C语言程序设计 -任正云 第5章循环结构.ppt
- C语言程序设计 -任正云 第6章 函数.ppt
- C语言程序设计 -任正云 第7章数组.ppt
- 2024高考物理一轮复习规范演练7共点力的平衡含解析新人教版.doc
- 高中语文第5课苏轼词两首学案3新人教版必修4.doc
- 2024_2025学年高中英语课时分层作业9Unit3LifeinthefutureSectionⅢⅣ含解析新人教版必修5.doc
- 2024_2025学年新教材高中英语模块素养检测含解析译林版必修第一册.doc
- 2024_2025学年新教材高中英语单元综合检测5含解析外研版选择性必修第一册.doc
- 2024高考政治一轮复习第1单元生活与消费第三课多彩的消费练习含解析新人教版必修1.doc
- 2024_2025学年新教材高中英语WELCOMEUNITSectionⅡReadingandThi.doc
- 2024_2025学年高中历史专题九当今世界政治格局的多极化趋势测评含解析人民版必修1.docx
- 2024高考生物一轮复习第9单元生物与环境第29讲生态系统的结构和功能教案.docx
- 2024_2025学年新教材高中英语UNIT5LANGUAGESAROUNDTHEWORLDSect.doc
文档评论(0)