【4_2】数组2排序查找精要.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
思想:先确定待查找记录所在的范围,然后逐步缩小范围,直到找到或确认找不到该记录为止。 前提:必须在有序表中进行。 分三大步骤: (1)确定范围low,high (2)确定中间位置:mid=(high+low)/2 (3)比较a[mid]与 key的关系 分三种情况: 1)若中间项的值等于k,则说明已查到,返回mid 2)若k小于中间项的值,则在线性表的前半部分查找;high=mid-1 3)若k大于中间项的值,则在线性表的后半部分查找;low=mid+1 二分查找 对分查找算法 mid=(low+high)/2不进位取整 low:下界 high :上界 k=r(mid) : 查找成功,返回mid kr(mid) : high=mid-1 继续 k r(mid) : low=mid+1 继续 lowhigh: 查找不成功 二分查找 例 [ 8 17 25 44 68 77 98 100 115 125 ] 查找 k=17 1 2 3 4 5 6 7 8 9 10 mid=(1+10)/2=5 mid=(1+4)/2=2 low high mid mid=(low+high)/2不进位取整 [ 8 17 25 44] 68 77 98 100 115 125 low high=mid-1 mid 查找成功! 二分查找 例 [ 8 17 25 44 68 77 98 100 115 125 ] 查找k=120 1 2 3 4 5 6 7 8 9 10 low high mid mid=(1+10)/2=5 8 17 25 44 68 [ 77 98 100 115 125 ] high low mid mid=(6+10)/2=8 8 17 25 44 68 77 98 100 [ 115 125 ] high low mid mid=(9+10)/2=9 8 17 25 44 68 77 98 100 115 [ 125 ] high low mid mid=(10+10)/2=10 8 17 25 44 68 77 98 100 115 125 high low mid 因为125120 所以high= mid -1 highlow 查找失败 查找失败! int find_bin(int a[],int n,int key) { int low=0,high=n-1,mid; while(low=high) { mid=(low+high)/2; if(key==a[mid]) return mid; if(keya[mid]) high=mid-1; else low=mid+1; } return -1; } 函数入口参数 找到时返回下标位置 找不到时 返回-1 二分查找算法 这一章我们学习了 数组数据类型 在什么情况下使用数组这种数据类型 向函数传递一维数组和二维数组的方法 用数组名作为函数参数 数组名的特殊意义 和用简单变量作为函数参数的不同之处 常用算法 求最大值,排序,查找,数据的排列和组合算法 作业 上机实现 插入排序 选择排序 冒泡排序 上机实现 顺序查找 二分查找 由于C语言中数组的下标从“0”开始,若V是一个Sqlist类型的顺序表,则顺序表中第i个数据元素对应为V.Elem[i-1]。插入算法可描述为: * * 第4章 数组 (2) 排序算法 查找算法 查找算法 定义:给定一个值K,在含有n个记录的文件(数据结构)中进行搜索,寻找一个关键字值等于K的记录,如找到则输出该记录;否则输出查找不成功信息。 顺序查找(适用于无序数据和有序数据) 二分查找 (适用于有序数据) 顺序查找算法 (判断K 是否与某个数相同) 从表的一端开始顺序扫描线性表,依次将扫描到的结点关键字与给定值K比较,若当前扫描到的结点关键字与k相等则查找成功;否则继续扫描。若扫描结束后,仍未找到关键字等于K的结点,则查找失败。

您可能关注的文档

文档评论(0)

三四五 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档