C++数组与字符串解读.ppt

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C数组与字符串解读

8 5 4 2 9 5 4 2 8 4 2 5 2 4 比较4次 第一轮 比较3次 第二轮 比较2次 第三轮 比较1次 第四轮 9 8 5 4 2 8 9 5 4 2 8 5 9 4 2 8 5 4 9 2 8 5 4 2 5 8 4 2 5 4 8 2 5 4 2 4 2 4 5 2 对 n 个数,则要进行n-1趟扫描,在第 i 趟扫描中要进行 n-i 次比较。 可以推知: /*排序*/ for (i=0; iN-1; i++) for ( j=0;jN-1-i ; j++) if (a[j]a[j+1]) { t =a[j]; a[j]=a[j+1]; a[j+1]=t; } 输入数组 输出数组 for i=0 to n-1 for j =0 to n-i-1 a[j] a[j+1] 真 假 a[j] a[j+1] #includeiostream.h #define N 10 void main() { int i,j,a[N],t; for(i=0;iN;i++)/*输入*/ cina[i]; for(i=0;iN;i++)/*输出*/ couta[i]; /*排序*/ for (i=0;iN-1;i++) for(j=0;jN-1-i;j++) if(a[j]a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } for(i=0;iN;i++) /*输出*/ couta[i]; } 源程序: 例5.5.1 (2)选择法排序 特点:比较后不立即互换元素,而是记下其位置并在每一轮比较完毕后和S(i)互换. 首先,比较的元素不同,以降序为例,是当前元素与上次比较後的最大元素进行比较,因此,在进行比较之前,要有一个初始化最大元素的过程. 其次,确定完毕的元素的互换是在每一轮完成后进行的,而不是在比较後进行的. 再次,互换元素的不同,为S(i)和S(iMax) :举例 原始数据: 3,5,7,9,4 要求:降序 第一轮比较,初始化设最大元素下标为 k=0 3   5   7   9   4 k=0 3   5   7   9   4     k=1 3   5   7   9   4       k=2       3   5   7   9   4           k=3 k=3 S(i) 与 S(k)交换的结果: 9   5   7   3   4 /*设置变量k用以存储当前最大数的下标*/ #include iostream.h void main( ) { int a[6] , i , j , k , t; for ( i=0 ; i6 ; i++) cina[i]; for ( i=0 ; i5 ; i++) { k=i ; for ( j=i+1 ; j6 ; j++) if ( a[k]a[j] ) k=j ; if ( k!=i ) { t=a[i] ; a[i]=a[k] ; a[k]=t ; } } for ( i=0 ; i6 ; i++) couta[i]; } 源程序:例5.5.2 2.在有序数组中插入一个数后使原数组仍然有序 例如:3 5 7 12 18, 将b=10插入 步骤: (1)要找到b在数组中的位置 (2)给b让位置 (3)将b放到该位置上 b=10 3 5 7 12 18 (2) 3 5 7 12 12 18 (3) for(i=0;i5;i++) if(a[i]b) break; for(j=4;j=i;j--) a[j+1]=a[j]; a[i]=b; 12 18 10 (1) 3 5 7 12 18 a[0] a[1] a[2] a[3] a[4] a[5] 程序见例4.3.3 3 5 7 10 12 18, 将b=10删除 步骤: (1) 要找到b在数组中的位置 (2) 后面的数组元素依次前移,覆盖该位置上的数组元素即可实现删除 3.在有序数组中删除一个数,例如: 3 5 7 10 12 18 (1) 3 5 7 10 12 18 (2) 3 5 7 12 12 18 for(i=0;i6;

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档