- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一维数组的应用 数组中的每个元素由唯一下标来标识,通过数组名及数组的下标可以唯一地确定数组中的元素。 数组元素也称为下标变量。下标可以是表达式,其值必须是整数。下标变量可以象简单变量一样参与各种运算 int a[5],b[2],i,j; a[0]=b[0]=2; //下标为常量 a[i]=j; //下标为变量, a[j+1]=8; //下标为表达式 a[b[0]]=a[i]+a[0]; //下标是数组元素的值 int h[5]; for(i=0;i5;i++) h[i]=i+1;//利用循环为数组元素赋值 数组之间不能直接相互赋值,即使对于同类型且元素个数相同的数组之间,也不能直接相互赋值。例如: int x[5],y[5]={2,4,6,10,100},i; x =y; //语法错误,赋值号左边不是左值 要将数组y中的各个元素值依次拷贝到数组x的各个元素中时,必须使用循环语句来实现。例如: for(int k=0;k5;k++) x[k]=y[k]; 例6-1 求多项式y=5x5-3.2x3+2x2+6.2x-8的值。 算法分析:可将多项式5x5-3.2x3+2x2+6.2x-8分解成((((5x+0)x-3.2)x+2)x+6.2)x-8,将一次式的系数依次存放在数组a中,只要重复计算5个一次式。 如果多项式中缺某一项,其系数要用0补齐。本例中的a[4]=0。程序为: #include iostream.h void main(void) { const int m=5; float a[m]={-8,6.2,2, -3.2,0},y=5,x; int i; coutinput x=; cinx; for(i=m-1;i=0;i--) //利用循环实现重复计算 y=y*x+a[i]; //计算一次式 couty=yendl; } 例6-2 将下列10个数按由小到大的顺序排列输出。15,8,0,-6,2,39,-53,12,10,6 (1)选择排序 选择排序的基本思想(由小到大的顺序排列):在一组数据中选择一个比较小的数放在排头,在剩余的数据中再选择一个比较小的数放在次排头,…,按照这种方法一直排下去,直到剩下最后一个数为止。假设有n个数据,要排序n-1轮。 #include iostream.h void main(void) { int a[10]={15,8,0,-6,2,39,-53,12,10,6 }; int i,j,k,min,temp; for(i=0;i9;i++) { //比较排序的总轮次 min=a[i],k=i; //假设排头的数据最小 for (j=i+1;j10;j++) { //每论比较的次数 if (mina[j]) { //较小的数放在min中,记下位置k min=a[j]; k=j; } } if (i!=k) { //若不是最小数,与最小值a[k]交换 temp=a[i]; a[i]=a[k]; a[k]=temp; } } for(i=0;i10;i++)couta[i]\t; //输出排序后的数据 coutendl; } #include iostream.h void main(void) { int a[10]={15,8,0,-6,2,39,-53,12,10,6 }; int i,j,temp; for(i=0;i9;i++) //冒泡排序的总轮次 for(j=0;j10-i;j++) //每轮比较的次数 if(a[j]a[j+1]) { //两数交换 temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } //较大的数后移 for(i=0;i10;i++)couta[i]‘ ’; //输出排序结果 coutendl; } 例6-3 在有序数列{-56,-23,0,8,10,12,26,38,65,98}中,查找数据38在这数列是否存在。 两分查找的思想:两分查找也称为折半查找。其方法是将有序数列逐次折半,并确定折半的数据位置,用待查找的数据与其比较,若相等则查找成功。否则比较两数的大小,如果待查找的数据比折半位置的数据小,那么到前半区间继续查找,否则到后半区间继续查找。 具体做法是: (1)将有序数列存放在数组s中。 (2)设置3个标记,low指向待查区间的底部,high指向待查区间的顶部,binary指向折半
文档评论(0)