- 1、本文档共194页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构-查找和排序.pdf
微动嵌入式培训-数据结构之查找和排序
主讲人:微动嵌入式培训
Email:wikore@
查 找
• 查找(Search) :
确定一个已给的数据是否出现在某个数据元
素集合中。
• 查找(Searching)的定义是:
给定一个值K,在含有n个结点的表中找出关
键字等于给定值K的结点。若找到,则查找成
功,返回该结点的信息或该结点在表中的位
置;否则查找失败,返回相关的指示信息。
• 查找的方法
1. 顺序查找
2. 二分查找(折半查找)
3. 分块查找
4. 二叉树查找(BST、B-树、B+树、B*树)
5. 哈希查找
• 按查找表的结构可将查找表分为静态查找
表和动态查找表两类。
• 静态查找静态查找表是仅仅进行查询和检
索操作,不改变查找表中数据元素间的逻
辑关系的查找。静态查找法主要有:顺序
查找,折半查找,分块查找等。
• 动态查找动态查找表是除了进行查询和检
索操作外,还对查找表进行插入、删除操
作的查找,动态地改变查找表中数据元素
之间的逻辑关系。动态查找法主要有:二
叉树查找,哈希查找。
顺序查找
• 基本思想
从表的一端开始,顺序扫描线性表,依次将扫
描到的结点关键宇和给定值K相比较。若当前
扫描到的结点关键字与K相等,则查找成功;
若扫描结束后,仍未找到关键字等于K的结点
,则查找失败。
• 例如,在关键字序列为{3,9,1,5,8,10,6,7,2,4} 的
线性表查找关键字为6的元素。
顺序查找过程如下:
开始: 3 9 1 5 8 10 6 7 2 4
第1次比较: 3 9 1 5 8 10 6 7 2 4
i=0
第2次比较: 3 9 1 5 8 10 6 7 2 4
i=1
第3次比较: 3 9 1 5 8 10 6 7 2 4
i=2
第4次比较: 3 9 1 5 8 10 6 7 2 4
i=3
第5次比较: 3 9 1 5 8 10 6 7 2 4
i=4
第6次比较: 3 9 1 5 8 10 6 7 2 4
i=5
第7次比较: 3 9 1 5 8 10 6 7 2 4
i=6
查找成功,返回序号6
• 顺序查找顺序结构的类型定义
#define MAXSIZE 100
typedef int key_type;
typedef char elem_type[10];
typedef struct{
key_type key; //存放关键字,KeyType为关键字类型
elem_type data;//其他数据, ElemType为其他数据的类型
} line_list;
被查找的数组R定义为
line_list R[MAXSIZE];
• 顺序查找算法实现
int SeqSearch(LineList R[],int n,KeyType k)
{
文档评论(0)