数据可以存放在变量里,每一个变量有一个名字,有一个类型,还有它的生存空间。
如果我们需要保存一些相同类型、相似含义、相同生存空间的数据,我们可以用数组来保存这些数据,而不是用很多个独立的变量。
数组是长度固定的数据结构,用来存放指定的类型的数据。一个数组里可以有很多个数据,所有的数据的类型都是相同的。
第5周 数组
5.1 数组
5.2 数组计算
5.3 二维数组
5.1 数组
初试数组
计算平均数程序的功能拓展:输出比平均数大的数和个数。记录数据。
数组声明【定义】及初始化:int [ ] number = new int [ 数组数量 ];
数组赋值:number [ i 数组位置变量] = 赋值变量 ; 遍历数组【根据数组下标】
数组元素使用: = number [ ]
遍历数组【根据数组下标】
创建数组
(数组是一种容器【容器:放东西的东西】)
特点:所有的元素都有相同的类型,一旦创建不能改变大小
定义数组变量:
类型 [ ] < 名字 > = new 类型 [ 元素个数 ] ;
每个元素是一个变量
数组的元素
每个数组元素都类型相同,索引(或下标)是从零开始的,通索引(或下标)访问数组元素数据(内容);
数组下标范围:最小是零,最大是元素个数-1,下标不会检查有效性,元素个数可以是变量;
数组内部成员:length告诉它的元素数量
程序的可拓展性
数组变量
直接初始化数组:例:int [ ] scores = { 87,99,23,.......}; 直接用大括号给数组所有元素初始值,不用给出数组大小,scores.length得出数组元素多少。
可拓展性强的代码,模块。
数组变量赋值
数组变量是数据的管理者:数组变量里面没有数据(是地址,指针指向的数组内容的地址),不是所有者,数组本身。【两个数组做“=”,即使其管理相同的数组地址】。
数组变量管理着数组。数组由数组变量管理,数组变量之间的赋值是“管理权限的赋予”,数组之间的比较是判断两个数组是否管理相同数组。
复制数组
必须遍历源数组将每个数组元素逐一拷贝给目的数组。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
5.2 数组计算
投票统计
数据与算法设计;创建数组,数组参与运算,遍历数组输出
遍历数组——for-each循环
搜索程序【在给定的数据中,找出某个数据是否存在】
线性的搜索算法,遍历数组的for循环运用
for-each循环【 for (int k :data) { 循环体}】 data是数组【对于data数组当中的每一个元素,依次每一轮拿出来作为k的值】,只能读出数组的值不能修改数组
for (类型 变量 : 数组){
}
数组的例子:素数
算法改进:每个遍历,偶数改进,sqrt(x)。【 n -> n/2 - > sqrt(n) 】效率提升
方案改进:构造前50个素数,用素数判断是否为素数
模块命名: continue 模块名 ;
构造素数表:素数的倍数不是素数,。【构造以内的素数表】
计算机和人的思考方式不同。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
5.3 二维数组
例:
int [ ] [ ] a = new int [ 3 ] [ 5 ] ;
二维数组的遍历
a [ i ] [ j ] ;【i行,j列】
二维数组的初始化
int [ ] [ ] a = { {1,2,3,...} , {....}, {.....},............. ,{.....}, };【每行一个{},用“,”分隔,省略补零】。
井字棋游戏程序
读入3*3的矩阵,游戏胜利条件算法构造