一、求最大值
1、问题
从键盘输入本次Java考试五位学生的成绩,求考试成绩最高分,并记录是第几个学生。
2、解决思路
一开始假定第一个数最大,然后取出第二个数与这个最大值比较,如果比最大值大,则最大值就是第二个数,然后再比较第三个,第四个。
3、实现
我们使用max存储擂主初始值,也就是第一个元素为擂主,然后循环打擂,循环结束后max存的就是最高分。
巩固练习:
任务要求:
1、 定义一个整型数组,并赋初值 61, 23, 4, 74, 13, 148, 20
2、 定义变量分别保存最大值、最小值、累加值和平均值,并假设数组中的第一个元素既为最大值又为最小值
3、 使用 for 循环遍历数组中的元素,分别与假定的最大值和最小值比较。如果比假定的最大值要大,则替换当前的最大值;如果比假定的最小值要小,则替换当前的最小值
4、 循环执行过程中对数组中的元素进行累加求和
5、 循环结束根据累加值计算平均值,并打印输出相关内容
输出结果:
试一试:
找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。
输入格式:
输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出最大值及最大值的最小下标,中间用一个空格分开。
输入样例:
6
2 8 10 1 9 10
输出样例:
10 2
二、 使用 Arrays 类进行排序
Arrays 类是 Java 中提供的一个工具类,在 java.util 包中。该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序、搜索等。
Arrays 中常用的方法:
1、排序
语法: Arrays.sort(数组名);
可以使用 sort( ) 方法实现对数组的排序,只要将数组名放在 sort( ) 方法的括号中,就可以完成对该数组的排序(按升序排列),如:
运行结果:
三、其他排序算法
1、选择排序
进行选择排序就是把所有的数据扫描一遍,找到其中最小的数据,让他与最左边的数据(0号位置)进行交换(如果最左边的数据就是最低的,那么不进行交换)。这样最左边的数据就是有序的状态,不需要再次交换位置了。
(1)分析
第一轮排序:
第二轮排序:
第三轮排序:
(2)动画演示
(3)代码实现
2、插入排序
有一组学员的成绩{99,82,63,60, 85},将它们按升序排列。要增加一个学员的成绩,将它插入成绩序列,并保持升序。
(1)分析
(2)动画演示
(3)实现
3、快速插入排序
4、冒泡排序
四、将数组转换为字符串
语法: Arrays.toString(数组名);
可以使用 toString( ) 方法将一个数组转换成字符串,该方法按顺序把多个数组元素连接在一起,多个元素之间使用逗号和空格隔开,如:
运行结果为:
输出数组nums中的元素:[25,7,126,53,14,86]
试一试:
(1)在程序中定义了一个数组 hobbies,请在黑体加粗的“补充代码”处将代码填写完整,实现使用 Arrays 类对数组进行排序并转换输出。
//导入Arrays类
补充代码
public class HelloWorld {
public static void main(String[] args) {
// 定义一个字符串数组
String[] hobbies = { "sports", "game", "movie" };
// 使用Arrays类的sort()方法对数组进行排序
补充代码
// 使用Arrays类的toString()方法将数组转换为字符串并输出
System.out.println( 补充代码 );
}
}
运行结果为: [ game , movie , sports ]
(2)本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。
输入格式:
输入在第一行先给出非负整数N(<10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。
输出格式:
在一行内输出将X插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。
输入样例:
5
1 2 4 5 7
3
输出样例:
1 2 3 4 5 7