数组总结
数组总结
一 一维数组的定义
类型标识符 数组名(常量表达式) 下标值必须在数组定义的下标范围内 否则会出现 下标越界错误
二 一维数组的输入与输出
采用循环语句结合下标变化逐个元素进行 例
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)]);
个人总结
①数组这部分有难度 我觉得关键是要弄清逻辑关系 有一些题目本质的算法差不多 要多积累总结各种算法 并且要多加练习掌握他 许多问题都是由各种小的问题组成 分析时要先小后大 把小部分的解决 再通过逻辑结构整合到一起
② 要注意细节性的问题 数组的大小要合适
③ 思维要缜密 二维数组考验空间能力 要多想元素之间存在的空间结构关系以及规律
④应该在作业的基础上再多加练习 见的题型多了 思路自然就会多一些 要多总结算法经验 看的好的算法要记住学会应用 再就是要多向别人请教 自己有时候很难有思路有想法 会去看别人写的程序 然后一步一步扣 弄懂他们 再自己写出来 也算一种进步
⑤要加强自学的力度 不靠老师教 要靠自己学