第五单元 数组和指针(I).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文档。上传文档
查看更多
第五单元 数组和指针(I)

5.7 多级指针与多维数组 (选读) 5.7 一级指针与二维数组 5.7 一级指针与二维数组 5.7 一级指针与二维数组 5.8查找与排序 (I)(P.196) 5.8.1 常用查找方法 5.8.1 常用查找方法 5.8.1 常用查找方法—对半查找 5.8.1 常用查找方法 参见【例6.4】对半查找递归算法 参见【例6.4】对半查找递归算法 5.8.1 常用查找方法 参见【例6.5】对半查找迭代算法 5.8.2 常用的排序法 5.8.2 常用的排序法 5.8.2 常用的排序法 5.8.2 常用的排序法 【例6.7】升序对半插入排序算法 5.8.2 常用的排序法 参见【例6.8】冒泡排序算法 5.8.2 常用的排序法 【例6.9】直接选择排序 * * 第五单元 数组与指针(I) 5.8 查找与排序 5.7 多级指针与多维数组(补充) 多级指针的概念: 多级指针变量中存的是另一个指针变量的地址,其说明如下: int val=10; int *pval=val; int **ppval=pval; //是多少级指针就有多少*号 cout val‘\t’ *pval‘\t’ **ppval; 这里val、*pval、**ppval值均为10。 注意*号为间接引用运算符,定义中的*号是指针说明符。 pval val 10 变量ppval 变量pval 变量val 指针与一维数组: 指向一维数组(首元素)的同类型指针与该数组名等效: int a[10], *pa =a;// =a[0]; 则pa[0] ,就是a[0]; *pa,即a[0]; *(pa+1) 和pa[1] ,都代表a[1]。 即a 与pa 两者等效。 二维数组与一级指针: 二维数组在内存中以一维数组的形式存储,所以可以采用一级指针指向并访问它。如有: int x2d[m][n]={1,2,3,4,…..}; int *pt=x2d[0][0];//x2d或x2d[0],可以?,错,不匹配 如何用pt访问x2d[i][j]? X2d数组对应一维内存的索引为i*n+j。 所以*(pt+i*n+j) 就是x2d[i][j],相等。 【例5.14】用指向二维数组首地址的一级指针访问数组元素。 int main( ){ int a[3][6]={{1,2,3,4,5,6},{7,8,9,10,11,12},{13,14,15,16,17,18}}; int * ptr,i,j; ptr=a[0][0] ; //不能ptr = a; for(i=0;i18;i++){ cout*(ptr+i)\t; if(i%6==5) coutendl; } return 0;} 启示:可用指向任意维数组首地址的一级指针以及长度信息,将数组完整地传递到函数中,从而实现函数(算法)的通用性。 5.8.2 常用的排序法 5.8.1 常用查找方法 查找(search):是最重要的计算应用之一,是在数据集合中寻找满足条件的数据,找到后进一步给出该数据对象的细节信息,在数据库技术中称为检索(retrieval)。不同于枚举查找! 排序(sorting): 要实现查找,首先要对数据排序。查找算法不适用杂乱无章的数据。 例如利用计算机数据库可以快速查找到数据,首先因为其数据有序排列,其次使用了查找算法。 顺序查找: 从首个元素开始,依据一定原则顺序查找直到找到或查到最后元素为止。 查找是按关键字(key word)进行。可以唯一地把资料区分出来的数据项被称为主关键字。如学生的资料,学号可作为主关键字。 对于数据集合,按照关键字小的往前还是后排列,可分别称为升序排列与降序排列。对于升序排列,可以采用对半查找(binary search)。 low 8 9 17 13 11 20 7 19 21 23 31 26 29 2 5 37 39 23 查找 low mid high 20 21 29 26 23 31 37 39 mid high low 20 21 23 mid high 23 low mid high 成功 图6.3 查找成功例 首先安排两个变量low和high作为关键词序列的首尾两元素的下标,取mid= (low+ high)/2,如mid位置的元素是所查找的,则结束。如果该元素大了,则取low=mid +1, high不变,继续查找;如果该元素小了,则取 high=mid-1,low不变,继续查找。如果查到low=high仍未找到,则失败,停止。 对半查找: 2 5 7 8 11 13 17 9 19 20 23 21 26 29 31 37 10 查找 low 39 mi

文档评论(0)

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

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

1亿VIP精品文档

相关文档