第三章 数组

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

60 80 90 70 85
成 绩 单
使用数组求平均值2-2 • 回顾问题1:
令狐冲的班里有30位学生,使用动态录入并赋值的方 式计算平均分
演示示例2:演示动态录入成绩并计算Avg
常见错误3-1
public class Hello{ public static void main(String[ ] args){ int[ ] score = new int[]; score[0] = 89;
a) “刘星”,“夏雨”,“夏雪” b) 8,98,‘c’,23 c) 98.1,341.2,34.3
double型 String型
如何使用数组
使用数组四步走:
1、声明数组 2、分配空间 3、赋值 4、处理数据
int[ ] a;
55 99 77
a = new int[5]; a [0] = 8; a [0] = a[0] * 10; a[0]
int[ ] score2; score2 = {60, 80, 90, 70, 85}; }
int数组元素缺省值为0
public class Hello{ public static void main(String[ ] args){ 0 1 2
int[ ] score = new int[3];
score[0] = 89; System.out.println(score[1]);
0
89
0
0
0
0
}
}
输出结果
0
小结2
使用数组的步骤是什么?
int a[] = new int[]{8,4,2,1,23,344,12} 有一个数列:8,4,2,1,23,344, 12 1)循环输出数组的值(遍历) 2)求数组中所有数值的和(求和) 3)猜数游戏:从键盘中任意输入一个 数据,判断数列中是否包含此数,没 有则提示未找到该数
小结3
小明要去买一部手机,他询问了4家店的价格,分别 是2800元,2900元,2750元和3100元,显示输出最 低价 参考代码
int min = list[0]; //存储最小值 for ( int i = 0; i < list.length; i++){ if ( min > list[i] ) { min = list[i]; } } //交换
使用数组求平均值2-1
4 对数据进行处理:计算5位学生的平均分
int [ ] score = {60, 80, 90, 70, 85}; double avg; avg = (score[0] + score[1] + score[2] + score[3] + score[4])/5; int [ ] score = {60, 80, 90, 70, 85}; int sum = 0; double avg; for(int index = 0; index < score.length; index++){ sum = sum + score[index]; } 访问成员 avg = sum / score.length; 演示示例1:完整代码 数组的length属性 访问数组成员:使 用“标识符[下标]”
有序数组:折半查找
数组的插入、删除
• 如何从数组中删除某个指定位置的数据?
• 如何在有序数组中插入一个指定的数据, 保持有序
数组插入
问题描述:
for(i=0;i<N;i++) 如果一个数组中保存的元素是有序的(由大到小 { if(num[i]>in) ),向这个数组中插入一个数,使得插入后的数 break; 查找第一个大于要插入数的位置 组元素依然保持有序。 } for(j=N;j>i;j--) 为要插入的数留出位置 num[j]=num[j-1]; 将要插入的数保存到该位置 num[i]=in; System.out.println("\n 插入后的数组元素:\n"); for(i=0;i<N+1;i++)
score[0] = 89; score[1] = 63; score[2] = 45; System.out.println(score[2]); } } 编译出错,数组 越界
常见错误3-3
public static void main(String[ ] args){ int[ ] score = new int[5]; score = {60, 80, 90, 70, 85}; 编译出错,创建数组并 赋值的方式必须在一条 语句中完成
88
1 800 a
数组的声明
1 声明数组: 告诉计算机数据类型是什么
int[ ] score1; int score2[ ]; String[ ] name; //Java成绩 //C#成绩 //学生姓名
数据类型 数据类型[ ]
数组名[ ] ; 数组名 ;
数组初始化
2 分配空间: 告诉计算机分配几个格子
– 求平均值 – 求最大、最小值 – 排序
为什么需要数组3-1
1、一次Java内部测试结束后,老师给令狐冲分配 了一项任务,计算全班(30人)的平均分
int stu1 = 95; int stu2 = 89; 30个变量太繁琐 int stu3 = 79; int stu4 = 64; int stu5 = 76;
数组
预习检查
• 什么情况下使用数组? • 如何定义一个int数组? • 怎样引用一个数组中的元素?
本章任务 输入学员成绩: • 统计本次考试平均分 • 求出本次考试最高分 • 本次考试成绩排名
本章目标
• 掌握数组的基本用法
– 如何声明一个数组 – 如何分配空间 – 如何赋值
• 会应用数组解决简单问题
16 25 90 25 16 25 90
排序算法(作业)
• • • • • • • • • • • • • 选择排序(作业) 初始关键字 [49 38 65 97 76 13 27 49] 第一趟排序后 13 [38 65 97 76 49 27 49] 第二趟排序后 13 27 [65 97 76 49 38 49] 第三趟排序后 13 27 38 [97 76 49 65 49] 第四趟排序后 13 27 38 49 [76 97 65 49 ] 第五趟排序后 13 27 38 49 49 [97 65 76] 第六趟排序后 13 27 38 49 49 65 [97 76] 第七趟排序后 13 27 38 49 49 65 76 [97] 最后排序结果 13 27 38 49 49 65 76 97 判断数组元素是否有重复的数据 判断数组是否对称(作业) 例如{1,2,3,2,1}或者{1,2,2,1}
System.out.println System.out.println("\n");
冒泡排序
• 思路
• 依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比 较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3 个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将 小数放前,大数放后
数组定义
数组是一个变量,存储相同数据类型的一组数据
int类型 博物架名 标识符
67
4 3 2 1 0 score[0] 下标
古玩 物品编号 物品类型
数据 元素 元素下标 元素类型 数组名称 即“标识符”
64
79 89 95
score[5]
小结1
数组中的所有元素必须属于相同的数据类型
1、使用数组的好处是什么? 2、下列哪组数据能存储在数组中?数组的 类型是什么?
…… score = new int[30];
avgAge = new int[6];
name = new String[30]; 数组属于引用数 据类型 30
声明数组并分配空间
数据类型[ ] 数组名 = new 数据类型[大小] ;
数组赋值
3 赋值:向分配的格子里放数据
score[0] = 89; score[1] = 79; score[2] = 76; …… score[2] score[1] score[0] 太麻烦!能不能 一起赋值? 76 79 89 30 ……
分类存放不同类型的数据
1 5 20 6 80 int类型
12.5 15.6 66.78 99.5 88.7 double类型
a g
h
f k
char类型
数组在内存中的存储
内存
100
98 80 67 78 … 整型变量 int a = 80; 82
整型数组 int[ ] b = {100,98,…};
数组赋值
解决
方法1: 边声明边赋值
int[ ] score = {89, 79, 76}; int[ ] score = new int[ ]{89, 79, 76};
方法2:动态地从键盘录入信息并赋值
Scanner input = new Scanner(System.in); for(int i = 0; i < 30; i ++){ score[i] = input.nextInt(); }
求最大值3-3
完整代码演示
//计算成绩最大值 max = score[0]; for (int index = 1;index < 5;index++) { if (score[index] > max) { 使用max存储擂主初始值: 第一个元素为擂主
max = score[index];
} 循环打擂 } System.out.println("本次考试的五位学生的最高分是: " + max);
数组内存结构分配
• int arr[]=new int[4];内存是如何分配的
如何进行数组的拷贝 • int a1[]=new int[4]; • int b1[]=a1;
数组的搜索
问题描述:
输入10个数,保存在一个数组中,在数组中查找某个数, 给出是否找到的信息。如果找到了,要求输出该数在数组 中所处的位置;如果找不到,输出“没有找到!”。 无序数组:线性查找
排序2-1
for(i=0;i<N;i++) { 读入5个值保存在数组中 问题描述: for(j=0;j<N-i-1; j++) { 23 9 编写java程序实现冒泡排序算法,按照降序排列 if(grade[j] < grade[j+1]) 一组数。 { 23 90 9 16 temp = grade[j+1]; 23 90 9 16 grade[j+1] = grade[j]; grade[j] = temp; } } }
二维数组
二维数组
一维数组 示例:学员单门课程的成绩 多维数组
89
90
77

示例:学员两门课程的成绩
科 目
0 1
0 73 45
1 90 80
2 33 87
学号
二维数组
二维数组
• 声明 1>int score[ ][ ]; 2>int [ ][ ]score; • 空间分配 1>score=new int[3][5]; //3*5表格 2>score=new int[3][ ]; score[0]=new int[5]; score[1]=new int[5]; • 初始化 1>score[0][1]=100; 2>声明时一次性初始化: int intArray[ ][ ]={{1,2},{2,3},{3,4,5}};
求最大值3-1
2、从键盘输入本次Java考试五位学生的成绩, 求考试成绩最高分(极值)
擂台
求最大值3-1
max = stu[0] ; if (a[1]>max ){
max=a[1] ;
根据打擂台的规则:
使用循环 来解决
} if (a[2]>max ){
max=a[2] ;
} if (a[3]>max ){ max=a[3] ; } ……
30个变量
int stu6 = 88;
…… avg = (stu1+stu2+stu3+stu4+stu5…+stu30)/30
为什么需要数组3-2
生活案例:博物架
好办法——分类放,易于找
1、格子提供了存储空间 2、每一类别都起一个名字 3、每件物品都有个标号
字画类
古玩类
为什么需要数组3-3
类比博物架:可不可以把数据归类存放?
score[1]百度文库= 63;
System.out.println(score[0]); }
编译出错,没有写明数 组的大小
}
常见错误3-2
public class Hello{ public static void main(String[ ] args){
int[ ] score = new int[2];
相关文档
最新文档