- 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
您可能关注的文档
- CorelDRAW基础教程 栗青生 第7章 透镜应用和图框裁剪新.ppt
- CorelDRAW基础教程 栗青生 第8章 滤镜应用新.ppt
- C程序设计简明教程 王晓东 第2章 基本数据类型与表达式新.ppt
- C程序设计简明教程 王晓东 第3章 顺序结构新.ppt
- C程序设计简明教程 王晓东 第4章 选择结构新.ppt
- C程序设计简明教程 王晓东 第5章 循环结构新.ppt
- C程序设计简明教程 王晓东 第6章 数组新.ppt
- C程序设计简明教程 王晓东 第7章 函数与编译预处理新.ppt
- C程序设计简明教程(第二版) 王晓东及源代码 课件 第1章 概述新.ppt
- C程序设计简明教程(第二版) 王晓东及源代码 课件 第2章 基本数据类型与表达式新.ppt
- 福莱特玻璃集团股份有限公司海外监管公告 - 福莱特玻璃集团股份有限公司2024年度环境、社会及管治报告.pdf
- 广哈通信:2024年度环境、社会及治理(ESG)报告.pdf
- 招商证券股份有限公司招商证券2024年度环境、社会及管治报告.pdf
- 宏信建设发展有限公司2024 可持续发展暨环境、社会及管治(ESG)报告.pdf
- 品创控股有限公司环境、社会及管治报告 2024.pdf
- 中信建投证券股份有限公司2024可持续发展暨环境、社会及管治报告.pdf
- 洛阳栾川钼业集团股份有限公司环境、社会及管治报告.pdf
- 361度国际有限公司二零二四年环境、社会及管治报告.pdf
- 中国神华能源股份有限公司2024年度环境、社会及管治报告.pdf
- 广西能源:2024年环境、社会及治理(ESG)报告.pdf
最近下载
- 机械行业“人形机器人的Optimus时刻”系列(五):触觉感知(电子皮肤),高山将越,坦途在望.pdf
- 培训教材污水处理厂运营管理方案.pptx VIP
- 纪检委处理回复函.docx
- AP微积分BC 2016年真题 (选择题+问答题) AP Calculus BC 2016 Released Exam and Answers (MCQ+FRQ).pdf VIP
- 武汉市2025届高中毕业生四月调研考试(四调)物理试卷(含答案).pdf
- 《西安事变》课件.ppt VIP
- 排水沟设计计算11.xls VIP
- 2010版中药典,中国药典2010年版.doc
- 精彩拍摄跟我来.docx
- 小学常用单词分类汇总衡水体英语字帖(含例句).pdf
文档评论(0)