c语言第五章 数组算法总结.docVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章 数组 数组的概念:一组相同类型数据的集合,数组中的所有元素都只能是同一个类型的,数组中的元素在内存中的空间是连续的,数组的定义、数组元素的引用和数组的初始化看书或者课件 容易错的地方: 数组的定义语句如:int a[10]是定义了10个整型元素的数组,表示一共有a[0]----a[9]10个元素,切记Tc中元素的下标是从0开始,所以最后一个元素的下标是9而不是10!!!!! 只有定义语句Int a[10] 时,表示定义了一个数组,数组名为a,一共有10个元素,其他任何地方出现a[i]都表示一个元素的引用!!! 数组中最常用也是最重要的算法就是通过下标的变化来表示引用数组中的不同的元素,也就是数组元素的遍历,比如int a[10],则有10个元素,分别是a[0]-----a[9],则可以通过一个变量i从0循环到9,for(i=0;i=9;i++) a[i] 这样类似的方法来表示遍历数组中的元素!! (一)一维数组 主要算法: 数组元素的遍历:数组元素的输入输出,如果a数组中数组元素有n个,那么数组元素的引用是从a[0]----a[n-1],我们的思想是通过一个变量i从0循环到n-1,那么a[i]就可以表示a[0]到a[n-1]一共n个元素了 main() { int a[10],i; for(i=0;i10;i++) /*变量i做下标,取值0~9,分别表示对第一个元素a[0]到最后一个 scanf(“%d”,a[i]); 元素a[9]进行赋值*/ printf(“\n”); for(i=0;i10;i++) printf(“%5d”,a[i]);/*从头到尾输出数组的每一个元素*/ printf(“\n”); } 从一个数组中到处最大值和最小值:算法思想是用一个变量max表示存储最大值,那么给max赋初值为a[0],即从第一个开始,假设第一个元素是当前最大的,然后遍历数组中的每一个元素,每一个元素都跟max进行比较,如果有比max大的则修改max的值,求最小值的思路跟最大值类似。 main() { int i,n; float a[10],max,min; printf(“input data numbers:”); for(i=0;i10;i++) scanf(“%f”,a[i]); max=min=a[0]; /*设最大数和最小数都为a[0]*/ for(i=1;i10;i++) { if(a[i]max) max=a[i]; if(a[i]min) min=a[i]; } printf(“\nmax=%f,min=%f\n”,max,min); } 该算法中要注意的是max与min一定要赋初值,如果没有赋值的话那么max的初始值将是一个不定值!!切记 数组元素的逆序存放,int a[5]={15,6,7,8,19},比如数组中一共有五个元素,要求对该数组进行逆序存放即变成数组的存储顺序为19,8,7,7,15,分析这个问题的算法,要实现逆序存放,即把第一个数跟最后一个数进行交换,第二个数跟第四个数进行交换即a[0]------a[4],a[1]----a[2]这两对进行交换,也就是5个数只需要交换2次,如果是6个数则需要交换3次,也就是如果是n个数只需要交换n/2次,每次进行交换的时候,a[0]与a[4],a[1]与a[3],发现其规律是a[i]与a[4-i]进行交换,也就是a[i]与a[n-1-i]进行交换,所以i是从0开始,一直到n/2-1为止。 main() { int i,t; int a[5]= {15,6,7,8,19}; for(i=0;i2;i++) { t=a[i];a[i]=a[4-i];a[4-i]=t; } for(i=0;i5;i++) printf(“%3d”,a[i]); } 该算法要注意的地方是5个数只需交换两次,6个数只需交换3次,如果6个数交换6次,则又会交换回原来的样子,所以切记不能多交换!! a[0] 5 a[1] 9 a[2] 3 a[3] 6 a[4] 2 直接选择排序算法:如果有一个数组,int a[5]={5,2,6,1,4},要给这五个数进行从小到大的排序, 也就是a[0]中要存放最小的,a[1]中存放次小的…… 那么我们考虑要实现五个数的按顺序排序,步骤应该是一个一个来的,也就是先

文档评论(0)

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

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

1亿VIP精品文档

相关文档