《C语言程序设计教学资料》chap7.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文档。上传文档
查看更多
* * 假设对序列a作升序排序。排序开始前,令d=n。 其算法: 求距离d=d/2 当有交换发生时,比较a[i]和a[i+d]( i从1变到n-d) 若a[i]a[i+d],则a[i]和a[i+d]交换。 若d1,重复上述过程;否则排序结束。 * * d=n/2 a[0] a[1] a[2] a[3] a[4] =2 5 0 13 21 4 假设n=5,shell排序法示意图。 a[2]和a[4]对调。 5 0 4 21 13 a[0]和a[2]对调。 4 0 5 21 13 a[0]和a[1]对调。 a[3]和a[4]对调。 0 4 5 13 21 无对调 无对调 d=d/2 =1 * * 插入排序法 若a[0],a[1],…,a[m](mn)已经排好序,现在要将待排序的 数x,按其大小插入到数组a的适当位置中,且插入后仍 有序。 假设对序列a作升序排序。其算法是: s1: 找到插入位置k。 s2: 将a[k]到a[m]中的数顺序向后平移一个位置。 s3: 将x插入在a[k]处,且元素个数增加1。 * * /*arrexa11.c*/ void main( ) { int a[20], i, m, x; printf(input the size of a[]:); scanf(%d, m); printf(\ninput the elements:); for(i=0; im; i++) scanf(%d, a[i]); printf(\ninput x to insert:); scanf(%d, x); /*课后练习*/ } * * 数据的查询算法 顺序查找法 折半查找法 * * 顺序查找法 顺序查找法是一种简单和直观的寻找目标对象的方法, 可以自上而下逐个扫描,或者从下到上逐个查找,找到 时输出结果,根本不存在时输出提示信息。 其算法: S1: 输入待查的数值key。 S2: 将key与a[i]逐个比较(i=1 to N) S3:找到时输出它在a中的位置号,根本不存在时输出提示信息。 * * 折半查找法 假设a是升序的,即a[i]=a[i+1]( i=0, 2, …, N-1) a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] … a[10] top bot 将区间[top, bot]对分:mid=(top+bot)/2 若key=a[mid],则查找到;否则下一次查找在[top, mid-1]或[mid+1, bot]中进行,即查找范围缩小一半。 * * 数组 第七章 数组 第十章 指针* * * 第七章要点 掌握一维、二维数组的定义和引用方法、存储结构和初始化方法。 掌握有关一维数组的有关算法。 掌握数组的运算。 * * 主要内容 7.1 一维数组的定义和引用 7.2 二维数组的定义和引用 7.3 字符数组 10.1 10.2 10.3 10.4 * * 7.1 一维数组 问题:如下几组数据,它们分别该如何存储呢? 一个班学生的学习成绩 一行文字 一个矩阵 这些数据的特点是: 1、具有相同的数据类型 2、使用过程中需要保留原始数据 是一组具有相同数据类型的数据的有序集合。 数组 * * 一. 一维数组的定义 定义 数据类型 数组名[常量表达式]; 常量表达式中可以包括常量和符号常量。 * * 例如,int arr[100]; 数组名 * * 不允许对数组的大小作动态定义。 左边的程序对吗? int n; scanf(%d, n); int a[n]; … int n; int a[50]; scanf(%d, n); for(i=0; i=n; i++) … * * 二.一维数组元素的引用 逐个引用数组元素 数组名 [下标] 下标可以是整型常量或整型表达式。 例如,a[0]=a[1]+a[3]-a[2*2]; * * 例题,数组元素的引用 void main( ) { float a[100]; int i; for(i=0; i100; i++) scanf(%f, a[i]); for(i=0; i100; i++) printf(%f, a[i]); } * * a. 数据类型 数组名[ ]={常量表达式1,常量表达式2,…,常量表达式n};(n=1) b. 数据类型 数组名[常量表达式]={常量表达式1,常量表达式2,…,常量

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档