Lecture 12 Arrays(2 of 3).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文档。上传文档
查看更多
Dept.of Computer Sci. Tech.,YBU 关键问题 如何调整搜索区域 当xa[m]时,r=m-1,l不变 当xa[m]时,l=m+1,r不变 m=(l+r)/2 如何判定查找成功与失败 成功:a[m]==x,此时l=r 失败:lr 只要l=r且未查到,则继续查找 两个重要算法-二分查找法 * Dept.of Computer Sci. Tech.,YBU 算法 输入:升序排序的数据,存放在数组a中,元素个数为N;待查找的数据x 输出:若找到x则输出相应元素的下标,否则输出-1 Step 1: 初始搜索范围l=0, r=N-1 Step 2: 当l=r时循环执行 Step 2.1 中间元素下标m=(l+r)/2 Step 2.2 if x==a[m] then goto Step 3(查找成功) Step 2.3 if xa[m] then r=m-1, else Step 2.4 if xa[m] then l=m+1 Step 3: m=(lr ? -1 : m) Step 4: 输出 m 两个重要算法-二分查找法 * Dept.of Computer Sci. Tech.,YBU 两个重要算法-二分查找法 #include stdio.h #define N 10 main( ) { int a[N], l, r, m, x; for (l=0; lN; l++) scanf(”%d”, a[l]); /*输入升序排序整数*/ scanf(”%d”, x); l=0, r=N-1; while (l=r) { m=(l+r)/2; if (x==a[m]) break; else if (xa[m]) r=m-1; else l=m+1; } m=(lr ? -1 : m); printf(”\n%d”, m); } 输入:1?2?3?4?5?6?7?8?9?10? 输入:7? 输出:6 输入:1?2?3?4?5?6?7?8?9?10? 输入:0? 输出:-1 查找成功时,循环非正常结束:l=r;m为相应元素下标 查找失败时,循环正常结束:lr * 如果查找浮点数,应判断|x-a[m]|是否足够小 Dept.of Computer Sci. Tech.,YBU 算法分析:最坏情况下(如查找失败)的时间复杂度(数据比较次数) 第1次比较,保留N/2个数据 第2次比较,保留N/4= N/22个数据 … 第k次比较,保留N/2k个数据 若第k次比较后只剩1个数据,则N/2k=1,即k=log2N 再比较1次即可判定查找是否成功,因此最坏情况下的的比较次数为1+log2N(对数运算取整),数量级为log2N N=1024时log2N=10 线性查找算法查找失败时的时间复杂度为N 两个重要算法-二分查找法 * Dept.of Computer Sci. Tech.,YBU 阅读:【p134】例7.3 思考 二分查找法中查询成功和失败时三个指示器(l, r, m)的值之间分别有什么关系? 二分查找法输入N个升序排序的数据时,如何检验合法性(是否升序排列)?——不用排序算法 二分查找法中如何统计比较次数? 两个重要算法-二分查找法 * Dept.of Computer Sci. Tech.,YBU 实验内容:7.1 Hint:字符串的输入与存储问题 按字符处理,输入10个字符,并存放到有10个元素的char型数组中 Homework Practice * Dept.of Computer Sci. Tech.,YBU Review * Dept.of Computer Sci. Tech.,YBU 数组:多个同类型数据的连续而有序的组织结构 有确定的名字,称为数组名,命名法与变量的命名法相同 由若干元素构成,每个元素是同类型变量 每个元素由数组名和该元素的序号确定,该序号称为元素的下标,元素称为下标变量 下标是标示一个元素在数组中排列顺序的整型量,从0开始 一个数组的全体元素按下标递增的顺序占据连续的内存空间 基本概念 * Dept.of Computer Sci. Tech.,YBU 数组的维数 确定数组的一个元素所需要的下标个数 一维数组元素是线性分布结构,因此只需确定一个下标:该元素的序号 二维数组元素是平面分布结构,需要确定两个下标:第几行、第几列 三维数组元素是立体分布结构,需要确定三个下标:第几页、第几行、第几列 n维数组元素的确定需要确定n个下标:第一维下标、第二维下标、…、第n维下标 基本概念 * Dept.of Computer Sci. Tech.,YBU 数组和变量一样,在使用之前需定义 定义的内容 确

文档评论(0)

dart001 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档