- 1、本文档共132页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
查找和排序查找和排序41线性表查找411顺序查找412
第4章 查 找 和 排 序 4.1 线性表查找 4.1.1 顺序查找 4.1.2 折半查找 4.1.3 分块查找 4.2 二叉排序树的查找 4.3 哈希查找 4.3.1 哈希表的建立 4.3.2 处理冲突的方法 4.3.3 哈希查找 4.4 排序 4.4.1 直接插入排序 4.4.2 简单选择排序 4.4.3 冒泡排序 4.4.4 快速排序 4.4.5 归并排序 习题 4.1 线性表查找 查找(Searching),也称检索,亦即查表,就是在大量的信息集中寻找一个“特定的”信息元素。人们几乎每天都要做“查找”工作,如查寻电话号码、查字典、查图书目录卡片等。为确切定义查找,先引入几个概念。 查找表:由同一类型的数据元素(或记录)构成的集合。 关键字(key):数据元素中可以惟一标识一个数据元素的数据项。如学生的学号,居民身份证号等。 查找就是根据给定的关键字值,在查找表中确定一个关键字等于给定值的记录或数据元素。若存在这样的数据元素,则称查找是成功的,否则称查找不成功。 决定查找操作的是关键字,因此这里讨论时,只关注记录中的关键字域,而一概忽略记录中其它诸域的信息。 查找是许多重要的计算机程序中最耗费时间的部分,查找算法的优劣密切关系着查找操作的速度,因此对查找算法应认真研究。 关于查找,目前主要研究两方面的问题: (1) 查找的方法。 因为查找某个数据元素依赖于该数据元素在一组数据中所处的位置,即该组数据的组织方式,故应按照数据元素的组织方式决定采用的查找方法;反过来,为了提高查找方法的效率,要求数据元素采用某些特殊的组织方式。 (2) 查找算法的评价。 衡量一个算法的标准主要有两个:时间复杂度和空间复杂度。就查找算法而言,通常只需要很少的辅助空间,因此更关心的是它的时间复杂度。在查找算法中,基本运算是给定值与关键字的比较,所以算法的主要时间是花费在“比较”上。下面给出一个称为平均查找长度的概念,作为评价查找算法好坏的依据。 对于含有n个数据元素的查找表,查找成功时的平均查找长度为 其中,Pi为查找第i个数据元素的概率;Ci为查到第i个数据元素时,需与关键字进行比较的次数。 4.1.1 顺序查找 顺序查找是最简单、常用的查找技术。其基本思想是:从表的一端开始,依次将每个元素的关键字同给定值K进行比较,若某个元素的关键字等于给定值K,则表明查找成功,返回该元素的下标;反之,若直到所有元素都比较完毕,仍找不到关键字为K的元素,则表明查找失败,返回特定的值(常用?1表示)。 顺序查找方法既适用于以顺序存储结构组织的查找表的查找,也适用于以链式存储结构组织的查找表的查找。在本章的有关查找和排序算法中,假设线性表均采用顺序存储结构,其类型说明为: #define MAXLEN n /* n为查找表中元素个数的最大可能值*/ struct element{ int key; /*设关键字的类型为整型*/ int otherterm; /*为说明起见,除关键字外只有一个整型数据项*/ }; typedef struct element DATATYPE; DATATYPE table[MAXLEN]; 算法4-1 顺序查找算法。 int seqsearch1(DATATYPE A[], int k) { int i; i=0; while((A[i].key!=k)(iMAXLEN)) i++; if(A[i].key==k) return i; /*查找成功,返回被查元素在表中的相对位置*/ else return –1; /*查找失败,返回–1*/ } 若对此算法进行一些改进,在表尾增加一个关键字为指定值K的记录,可避免每“比较”一次,就要判别查找是否结束。当n很大时,大约可节省一半的时间。 算法4-2 改进的顺序查找算法。 #define MAXLEN n+1 int seqsearch2(DATATYPE A[],int k) { int i; i=0; A[MAXLEN?1].key=k; while (A[i].key!=k) i++; if(iMAXLEN?1) return i; /*查找成功,返回被查元素在表中的相对位置*/ else return –1;
您可能关注的文档
- 按疲劳强度计算安全系数轴的疲劳强度许用安全系数.PPT
- 控制系统仿真工具-大连海事大学研究生院.DOC
- 搜索拓扑结构-干大网络管理软件IT运维精品软件.DOC
- 搭配不当不合逻辑语序不当小心介词1关于.PPT
- 摩擦力提供向心力所以.PPT
- 操作系统课程设计指导书06本科20086.DOC
- 操作站联网方案成功实施证明了ECS-100的综合集成能力-软件.PPT
- 控矿因素定量组合研究的内容.PPT
- 政治合格素质过硬保障有力纪律严明作风优良2014年保卫处工作汇报.PPT
- 教材化的内容包括有体育教学内容的选择加工.PPT
- 2023届黑龙江哈尔滨第三中学高三二模英语试题 (解析版).docx
- 三校生对口升学考试计算机专题复习试题及答案解析.pdf
- 2023届江西省鄱阳县第一中学高三一模英语试题(原卷版).docx
- 2024届甘肃省高三下学期二模物理试题(解析版).pdf
- 2023届江苏省南京市等2地南京市教育科学研究所等2校一模英语试题(原卷版).docx
- 2023届江西省萍乡市芦溪中学高三一模英语试题(解析版).docx
- 2024届甘肃省高三二模语文试题(原卷版).pdf
- 2023届河南省郑州市高中毕业年级第二次质量预测英语试题(解析版).docx
- 2023届江西省抚州市金溪县第一中学等七校高三下学期第一次联考英语试卷(原卷版).docx
- 2023届吉林省吉林市普通中学高三上学期第二次调研测试英语试题(解析版).docx
最近下载
- 2024届高考语文写作分类训练-成功面面观.docx VIP
- 统一身份认证系统的设计与实现.docx VIP
- (高清版)-B-T 2659.1-2022 世界各国和地区及其行政区划名称代码 第1部分:国家和地区代码.pdf VIP
- ICN20531~32扫PWM恒流输出LED显示屏驱动芯片.pdf
- 2024世界献血者日20周年PPT课件(精选图文).pptx
- 妇科临床诊疗指南及操作规范.docx VIP
- 基于PLC的风力发电控制系统设计.doc VIP
- OH卡-亲密关系完整版.ppt
- 全套ISO27001信息安全文件一览表手册,程序文件,作业文件,表单.pdf VIP
- 2024第六届(2024年)“信用电力”知识竞赛活动总试题库-上(单选题汇总).docx
文档评论(0)