数组总结

数组总结

一 一维数组的定义
类型标识符 数组名(常量表达式) 下标值必须在数组定义的下标范围内 否则会出现 下标越界错误
二 一维数组的输入与输出
采用循环语句结合下标变化逐个元素进行 例
int h[100],a[20
for(i=0;i<100;1++)h[i]=0;
for(i=0;i<20;i++)a[i]=i*2+1
1 memset函数 给数组按字节进行赋值 包含头文件cstring 例如 memset(h,0,sizeof(h))就是将h数组中的所有元素赋值为0
2 算法总结 走楼梯 本质为斐波那契数列 定义f1=1 f2=2 f( i) =f(i-1)+f(i-2)
三 一维数组的插入删除
插队问题 定义时多定义一个元素
思想 先将第x后的元素依次往后一个单位 再把最后这个元素移动到第x个在这里插入图片描述
四 一维数组的查找统计
二分查找算法 用于单调增,减序列 在这里插入图片描述
五 一维数组的元素排序
算法1 选择排序 每一趟通过打擂台的方式比较出最小的元素 放在这些数据的前面在这里插入图片描述
算法2 冒泡排序 不断的交换两个相邻的数 在这里插入图片描述
六 应用举例
桶排序 适用于: 数据很多 但数据范围较小 在这里插入图片描述在这里插入图片描述

算法2 筛选法
定义一个 bool数组 pi=true 表示i还在筛子中 pi=false表示i已经被删除
例题 选素数在这里插入图片描述

约瑟夫问题 关键是用了两个计数器 bool类型 true表示还在 false表示退出 在这里插入图片描述
七 二维数组的定义和操作
输入输出 靠两个for循环
方阵问题主要是找元素位置的规律 行列标与元素值的规律
八 字符数组
注意数组中每个元素都是一个字符
输入输出
用scanf:个元索读scanf("%e" ,eter[0]);-用cin输人整个数组:cin >> letter;

用cin逐个元素输人:cin >> ltter[0 ];-用gets读人整个数组:gets (letter);

用getchar逐个读人:letter[ 0 ]=getchar( );…

字符数组的输出方法也很多,例如:用cout输出整个数组:cout >> letter;

  用cout逐个元素输出:cout >> letter[ 0 ];..用printf输出整个数组: printf( "%s" , letter);

  用printf逐个元素输出:printf( "%c",letter[ 0 ]);...用puts输出整个数组:puts (letter);

  用putchar逐个元素输出:putchar (letter[0)]);

个人总结

①数组这部分有难度 我觉得关键是要弄清逻辑关系 有一些题目本质的算法差不多 要多积累总结各种算法 并且要多加练习掌握他 许多问题都是由各种小的问题组成 分析时要先小后大 把小部分的解决 再通过逻辑结构整合到一起
② 要注意细节性的问题 数组的大小要合适
③ 思维要缜密 二维数组考验空间能力 要多想元素之间存在的空间结构关系以及规律
④应该在作业的基础上再多加练习 见的题型多了 思路自然就会多一些 要多总结算法经验 看的好的算法要记住学会应用 再就是要多向别人请教 自己有时候很难有思路有想法 会去看别人写的程序 然后一步一步扣 弄懂他们 再自己写出来 也算一种进步
⑤要加强自学的力度 不靠老师教 要靠自己学

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值