JAVA语言程序设计-数组.ppt
《JAVA语言程序设计-数组.ppt》由会员分享,可在线阅读,更多相关《JAVA语言程序设计-数组.ppt(49页珍藏版)》请在三一办公上搜索。
1、第五章 数组,5.1 一维数组5.2 多维数组5.3 数组的基本操作5.4 数组应用举例5.5 数组参数5.6 字符串,Introduction,数组,Array(阵列)变量:存储单个数据 数组:存储多个数据具有相同性质的一批数据Java 数组:用一个变量表示一组相同类型的数据,For Example,一组n个学生的成绩数据处理输入输出排序求最大求平均值判断不及格统计分数段给每一个学生的成绩数据设定一个变量?NO!,5.1 一维数组,数组一个变量名表示一组数据,每个数据称为数组元素每个元素通过下标来区分一维数组以一个下标确定数组中的不同元素多维数组多个下标表示一个数组元素数组必须先经过申明和初
2、始化后才能使用数组申明:确定数组名、数组的维数和数组元素的数据类型,一维数组的声明,一维数组声明的格式类型标识符 数组名 或类型标识符 数组名 例:表示学生的成绩(整数),可以声明数组score:int score;表示体重的数组类型为float的weight,声明:float weight;Note:方括号可以在变量名的后面,也可以在类型名后面,一维数组的初始化,数组初始化系统为数组分配存储空间,确定数组元素的个数用 new 初始化数组 数组名=new 类型标识符元素个数先声明数组再初始化 int sc;sc=new int10;float weight;weight=new float50
3、,数组元素通过下标来区分 下标最小值为0 下标最大值为元素个数减1 各元素的存储空间是连续的,一维数组初始化,在声明的同时进行初始化即将前述的声明语句、new语句合并为一条语句:类型标识符 数组名=new 类型标识符元素个数 或类型标识符 数组名=new 类型标识符元素个数例如:int sc=new int10;float weight=new float50初始化数组后,通过数组的length获取元素个数 数组.length例如:n=sc.length;/n=10 m=weight.length;/m=50,赋初值初始化数组,可以在声明数组的同时,给数组元素赋初值所赋初值的个数决定数组元素的
4、数目其格式如下:类型标识符 数组名=初值表初值表是用逗号隔开的初始值,例如:int score=65,34,78,81,56,92,56,87,90,77;,score0,score9,使用数组的好处,减少程序中的变量数量统一的数组名,易于理解对数据元素的操作可以使用循环语句一维数组元素的赋值和输出都可以通过单重循环语句完成【例补5-10】输入10个学生的成绩,统计最高分,平均分、不及格人数及高于平均分的人数,定义数组sc10用于存放10个学生成绩利用循环语句输入成绩并统计,5.2 多维数组,二维数组的声明二维数组经常表示一个矩阵二维数组的声明方式与一维数组类似,只是要给出两对方括号。二维数组
5、声明形式如下:类型标识符 数组名或 类型标识符 数组名例如:int a;/第一个叫做行,第二个叫做列,二维数组的初始化,先声明数组再初始化用new初始化二维数组 数组名=new 类型标识符行数列数例如:int a;a=new int34;声明同时初始化 类型标识符 数组名=new 类型标识符行数列数或 类型标识符 数组名=new 类型标识符行数列数例如:int a=new int34;,int a=new int34;数组中各元素通过两个下标来区分每个下标的最小值为0,最大值分别比行数或列数少1。系统为该数组a的12个元素分配存储空间,形式如表所示:,行,列,二维数组的初始化,初始化后,通过属
6、性length获取行数和列数获取数组行数:数组名.length 例:a.length/值为3获取数组列数:数组名行标.length 例:a0.length/值为3,int a=new int34;Java中,二维数组作为一维数组来处理A可看作一维数组,有3个元素a0、a1、a2每个元素本身是一维数组,例:,二维数组的初始化,在初始化时,可以各行单独进行,允许各行元素不同、int c=new int3;/c为3行二维数组 c0=new int1;/c0具有1个元素 c1=new int3;/c1具有3个元素 c2=new int5;/c2具有5个元素,a00、a01、a02、a03,赋初值初始化
7、二维数组,类型标识符 数组名=初值表0,初值表1,初值表n;例:int gd=65,34,78,81,56,92,56,87,90,92,69,75;,/gd共有12个元素,元素gd00,gd01,gd02,gd10,gd32的初始值分别为65,34,78,75,如表所示,注意:二维数组元素的赋值和输出可以通过双重循环语句完成,5.3 数组的基本操作,数组的引用 对数组的应用通常是对其元素的引用数组元素可以被赋值、被输出或参加表达式运算 int age=new int3;age0=25;age2=2+age0;数组的复制可以通过循环语句也可以直接将一个数组赋值给另一数组 int a=new i
8、nt6;/将b数组的各元素值赋值a数组的相应元素 int b=1,2,3,4,5,6;for(int i=0;i6;i+)ai=bi;或 a=b;,Demo1,int c,d,e,i,j;c=new int33;d=new int33;e=new int33;for(i=0;i3;i+)for(j=0;j3;j+)dij=i+j;cij=dij;e=d;,c、d、e数组各元素0 1 2 1 2 3 2 3 4,数组的基本操作,数组的输出数组输出通常是逐个元素结合循环语句实现 int a=new int6;for(int i=0;i6;i+)ai=i;System.out.print(ai+”)
9、;,输出:0 1 2 3 4 5,例【5-2】一维数组的复制,class ArrayC public static void main(String args)int a,b,i,j;a=new int3;b=new int5;System.out.println(a.length=+a.length);for(i=0;ia.length;i+)ai=i;System.out.print(ai+);System.out.println();/作用?(接下页),System.out.println(Before array assignment);System.out.println(b.len
10、gth=+b.length);for(j=0;jb.length;j+)bj=j*10;System.out.print(bj+);System.out.println();b=a;/注意,数组a、b长度不一样 System.out.println(After array assignment);System.out.println(b.length=+b.length);for(j=0;jb.length;j+)System.out.print(bj+);System.out.println();,a.length=30 1 2 Before array assignmentb.length
11、=50 10 20 30 40 After array assignmentb.length=30 1 2,int c,d,i,j;c=new int22;d=new int33;System.out.println(Array d:);for(i=0;id.length;i+)for(j=0;jdi.length;j+)dij=i+j;System.out.print(dij+“);System.out.println();c=d;System.out.println(Array c:);for(i=0;ic.length;i+)for(j=0;jci.length;j+)System.ou
12、t.print(cij+“);System.out.println();,例【5-3】二维数组的复制,程序运行结果如下:Array d0 1 21 2 32 3 4Array c0 1 21 2 32 3 4,/外循环控制行,/内循环控制列,5.4 数组应用举例-排序,【5-4】排序排序是将一组数按照递增或递减的顺序排列排序的方法很多,其中最基本的是选择法,基本思想:先在n个数中选最小数,放在第1个数组元素中。取第1个数,与后面n-1(即底2到第n)个数逐个比较。若第1个数大,则与数组元素中的值进行互换,直到最后。再在第2至第n个元素中,选最小数,放在第2个数组元素中。取第2个数,与后面n-2
13、(即3到n)个数逐个比较。若第2个数大,则与数组元素中的值进行互换,直到最后。重复以上步骤,直至在最后两个数中选取最小数,放在第n-1个数组元素中。最后第n个元素已是最大数了。,5.4 数组应用举例-排序,改进的选择法,基本思想:对于给定的n个数,找到最小数的位置,与第1个数交换最小数置于第1个位置(每一轮最多只做一次交换)对于剩下的n-1个数,重复步骤1,将次小数置于第2个位置对于剩下的n-2,n-3,最后2个数用同样的方法,分别将第3个最小数置于第3位置,第4个最小数置于第4位置,第n-1个最小数置于第n-1位置,最后第n个数已是最大数了。,若7,4,0,6,2,5,1(放在数组元数a中)
14、从小到大排序:1、7个数中,最小数是0,与第1个数7交换位置,结果为:0 4 7 6 2 5 12、余下的6个数最小数是1,与第2个数4交换,结果为:0 1 7 6 2 5 43、剩下的5个数最小数是2,与第3个数7交换,结果为:0 1 2 6 7 5 44、剩下的4个数最小数是4,与第4个数6交换,结果为:0 1 2 4 7 5 65、剩下的3个数最小数是5,与第5个数7交换,结果为:0 1 2 4 5 7 66、剩下的2个数是6,与数7交换,结果为 0 1 2 4 5 6 7,For Example,数组应用举例-排序,对n个待排序的数,要进行n-1轮的选择和交换过程那么,在每轮中,如何确
15、定最小数的位置?思路:第i轮最小数的位置position的确定 position=i;对于i后面的每个数aj 若apositionaj,position=j故第i轮的选择和交换过程中,要进行n-i次的比较,for(i=1;iaj)p=j;temp=ai;ai=ap;ap=temp;,5.4 数组应用举例-排序,另一种排序法-冒泡法,基本思想:从数组元素a(0)到a(n-1),将相邻的两个数两两进行比较(共比较n-1次),若前一个数大于后一个数,则进行对调。一趟操作后,a(n-1)已为最大数。再从数组元素a(0)到a(n-2)作同样操作后,结果是a(n-2)成为次大数。重复以上步骤,直至只剩a(
16、0)和a(1)作比较,大的数放在a(1),剩下的a(0)自然是最小数了.。,数组应用举例-一维数组,【例补5-1】产生10个2位正整数,按从小到大排序,输入任一正整数,插入到原有数据序列中,保持从小到大次序不变,【例补5-2】任意输入n个整数,再输入一个整数,查找该数在n个数中出现的位置和次数。,数组应用举例二维数组,【例补5-3】输出杨辉三角型(输出10行)1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 1
17、26 84 36 9 1【例补5-4】求一个个位整数构成的5行5列方阵对角线上元素之积,解题:定义一个10行10列的二维数组a1010ai0=1;aii=1aij=ai-1j-1+ai-1j,主对角线元素下标:行号和列号相等,即i=j副对角线元素下标:行号、列号之和等于4,即j=4-i,数组应用举例-矩阵运算,【例5-5】数学中的矩阵在Java中用二维数组实现,本例中要进行矩阵的加、乘运算。int c=1,2,3,4,5,6,7,8,9;int d=2,2,2,1,1,1,3,3,3;求c+d,c*d?矩阵乘法运算用数组c的第1行各个数与数组d的第1列各个数对应相乘后加起来,就是乘法结果中第1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 语言程序设计 数组
链接地址:https://www.31ppt.com/p-6510209.html