网站大量收购独家精品文档,联系QQ:2885784924

线性表的查找技术教案.doc

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

线性表的查找技术 教学目标: 理解顺序查找和二分查找的基本思想。 教学重点 顺序查找和折半查找的思想、算法。 教学难点 折半查找的思想和算法。 授课方法 讲授、示例 教学安排 1课时 教学手段 板书、课件 教学过程 教学 环节 教 学 内 容 教师活动 学生活动 导入 新课 日常生活举例引入查找的概念。 导入 学生思考 查找的基本概念 顺序查找 顺序表按值查找 顺序表的顺序查找(演示) 顺序查找算法 二分查找 二分查找的步骤 二分查找的示例 二分查找算法 总结 查找的基本概念 查找是在具有相同类型的记录构成的集合中找出 满足给定条件的记录。 为了便于讨论,把查找条件限制为“匹配”,即查找关键码等于给定值的记录。 查找分为静态查找和动态查找。 静态查找通常采用顺序查找和折半查找。 在线性表中进行的查找通常属于静态查找。 一、顺序查找 顺序查找,又称线性查找,主要用在线性结构中进行查找。 若表中有n个对象,则顺序查找从表的一端开始,用各对象的关键码与给定值k进行比较,直到找到与其值相等的对象,则查找成功,给出该对象在表中的位置。 若整个表都已检测完仍未找到关键码与k相等的对象,则查找失败。给出失败信息。 (1)、顺序表按值查找 int serch(int r[],int n,int k) { int i; for (i=0;i=n;i++) if (r[i]==k) return i+1; //下标为i的元素等于x,返回其序号i+1 return 0; //退出循环,说明查找失败 } (2)、顺序表的顺序查找(演示) 0 1 2 3 4 5 6 7 8 9 K 10 15 24 6 12 35 40 98 55 (3)、顺序查找算法 int SeqSearch1(int r[],int n,int k) { r[0] = k; i = n; while(r[i] ! = k) i - -; return i; } 二、二分查找(折半查找) 现在有50个小圆球,其大小、颜色等完全相同,其中有一个小球比其它49个小球重5克,现给你一天平(无具体刻度),要求将该小于找出来,我们应该怎么办? 有序表:以递增(或递减)顺序排列的表。 基本思想:给定值k与中间位置的记录的关键字比较,若相等则查找成功;若给定值大于中间位置记录的关键字值,则在表的后半部分继续二分查找;否则在表的前半部分进行二分查找,直至查找成功或不成功。 (1)、二分查找的步骤: (1)计算中间位置mid=(low+high)/2取整。 (2)k与R[mid]比较 若k=R[mid]则查找成功; 若kR[mid],则high=mid-1,转(3)。 若kR[mid],则low=mid+1,转(3)。 (3)若low≤high, 则重复(1) 否则:查找不成功,结束。 (2)、二分查找的示例: 1)、用二分查找法在顺序表中查找关键字为80的纪录! 第1步 18 26 32 45 52 66 80 91 52 66 80 91 第2步 第3步 80 91 查找成功 2)、查找关键字为10的纪录! 第1步 18 26 32 45 52 66 80 91 第2步 18 26 32 45 52 66 80 91 第3步 18 26 32 45 52 66 80 91 第4步 18 26 32 45 52 66 80 91 此时,high=-1,low=0,highlow,所以查找失败,不存在该数据。 (3)、二分查找算法: int binsearch(elemtype r[],int n,int key) { int low,high,mid; low=0; high=n-1; while(low=high) { mid=(low+high)/2; if(key==r[mid].key)return mid; else if(key r[mid].key) low=mid+1; else high=mid-1; } return –1; } 作业布置:给定11个数据元素的有序表(2,3,10,15,25,28,29,30,35,40),采用折半查找,试问: 若查找给定值为20的元素,将依次与表中哪些元素比较? 前面一节课我们学习了顺序查找,如果查找的数据较多或

文档评论(0)

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

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

1亿VIP精品文档

相关文档