C语言数据结构-查找和排序.ppt

  1. 1、本文档共139页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言数据结构-查找和排序

第六章 查找和排序 6.1 查找 6.1.1 查找的概念 6.1.2 静态查找 6.1.3 动态查找 6.2 内部排序 6.3 外部排序 查找 数据的组织和查找是大多数应用程序的核心,而查找是所有数据处理中最基本、最常用的操作。特别当查找的对象是一个庞大数量的数据集合中的元素时,查找的方法和效率就显得格外重要。 本章主要讨论顺序表、有序表、树表和哈希表查找的各种实现方法,以及相应查找方法在等概率情况下的平均查找长度。 6.1 查找的概念 查找表(Search Table):相同类型的数据元素(对象)组成的集合,每个元素通常由若干数据项构成。 关键字(Key,码):数据元素中某个(或几个)数据项的值,它可以标识一个数据元素。若关键字能唯一标识一个数据元素,则关键字称为主关键字;将能标识若干个数据元素的关键字称为次关键字。 查找/检索(Searching):根据给定的K值,在查找表中确定一个关键字等于给定值的记录或数据元素。 ◆ 查找表中存在满足条件的记录:查找成功;结果:所查到的记录信息或记录在查找表中的位置。 ◆ 查找表中不存在满足条件的记录:查找失败。 查找有两种基本形式:静态查找和动态查找。 静态查找(Static Search):在查找时只对数据元素进行查询或检索,查找表称为静态查找表。 动态查找(Dynamic Search):在实施查找的同时,插入查找表中不存在的记录,或从查找表中删除已存在的某个记录,查找表称为动态查找表。 查找的对象是查找表,采用何种查找方法,首先取决于查找表的组织。查找表是记录的集合,而集合中的元素之间是一种完全松散的关系,因此,查找表是一种非常灵活的数据结构,可以用多种方式来存储。 根据存储结构的不同,查找方法可分为三大类: ① 顺序表和链表的查找:将给定的K值与查找表中记录的关键字逐个进行比较, 找到要查找的记录; ② 散列表的查找:根据给定的K值直接访问查找表, 从而找到要查找的记录; ③ 索引查找表的查找:首先根据索引确定待查找记录所在的块 ,然后再从块中找到要查找的记录。 查找方法评价指标 查找过程中主要操作是关键字的比较,查找过程中关键字的平均比较次数(平均查找长度ASL:Average Search Length)作为衡量一个查找算法效率高低的标准。ASL定义为: 其中: Pi :查找第i个记录的概率,不失一般性,认为查找每个记录的概率相等,即P1=P2=…=Pn=1/n ; Ci:查找第i个记录需要进行比较的次数。 一般地,认为记录的关键字是一些可以进行比较运算的类型,如整型、字符型、实型等,本章以后各节中讨论所涉及的关键字、数据元素等的类型描述如下: 典型的关键字类型说明是: typedef float KeyType ; /* 实型 */ typedef int KeyType ; /* 整型 */ typedef char KeyType ; /* 字符串型 */ 数据元素类型的定义是: typedef struct RecType { KeyType key ; /* 关键字码 */ ┇ /* 其他域 */ }RecType ; 对两个关键字的比较约定为如下带参数的宏定义: /* 对数值型关键字 */ #define EQ(a, b) ((a)==(b)) #define LT(a, b) ((a)(b)) #define LQ(a, b) ((a)=(b)) /* 对字符串型关键字 */ #define EQ(a, b) (!strcmp((a), (b)) ) #define LT(a, b) (strcmp((a), (b))0 ) #define LQ(a, b) (strcmp((a), (b))=0 ) 6.1.2 静态查找 6.1.2.1 顺序查找(Sequential Search) 1 查找思想 从表的一端开始逐个将记录的关键字和给定K值进行比较,若某个记录的关键字和给定K值相等,查找成功;否则,若扫描完整个表,仍然没有找到相应的记录,则查找失败。顺序表的类型定义如下: #define MAX_SIZE 100 typedef struct SSTable { RecType elem[MAX_SIZE] ; /* 顺序表 *

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档