1、目标
掌握冒泡排序
使用Arrays类炒作数组
理解二维数组的使用
2、冒泡排序
如何实现数字升序排序
每次比较相邻的两数
小的交换到前面
每轮结束后最大的数交换到最后
2.1 使用二重数组实现升序排序
冒泡排序速记口诀(升序)
N 个数字来排队
两两相比小靠前
外层循环 N-1
内层循环 N-1-I
2.2 使用arrays为数组排序
使用java.util.Arrays类
java.util包提供的工具类Arrays类提供操作数组的方法,如:排序、查询Arrays类的sort()方法: 对数组进行升序排列
方法名称 | 说明 |
boolean equals(array1,array2) | 比较array1和array2两个数组是否相等 |
sort(array) | 对数组array的元素进行升序排列 |
String toString(array) | 将一个数组array转换成一个字符串 |
void fill(array,val) | 把数组array所有元素都赋值为val |
copyOf(array,length) | 把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致 |
int binarySearch(array, val) | 查询元素值val在数组array中的下标(要求数组中元素已经按升序排列) |
3、多维数组
三维及以上的数组很少使用
主要使用二维数组
从语法上Java支持多维数组
从内存分配原理的角度讲,只有一维数组
3.1二维数组
语法:
<数据类型> [ ][ ] 数组名; 或者 <数据类型> 数组名 [ ][ ];
二维数组实际上是一个以一维数组做为元素的一维数组
3.2 二维数组与内存
3.3 二维数组定义
定义并赋值
写法一:
int[][] scores = new int[][]{{1,2,3},{1,2,3}}
写法二:
int scores[][] = {{1,2,3,4},{1,2,3,4}}
练习
练习一、冒泡排列学员成绩
import java.util.Scanner;
// 按两次 Shift 打开“随处搜索”对话框并输入 `show whitespaces`,
// 然后按 Enter 键。现在,您可以在代码中看到空格字符。
public class Main {
public static void main(String[] args) {
double[] arr = new double[5];
double temp;
Scanner sc = new Scanner(System.in);
System.out.println("请输入无名学生的成绩");
for (int i= 0;i< arr.length;i++){
arr[i] = sc.nextDouble();
}
for (int i = 0;i< arr.length-1;i++){
for (int j = 0;j< arr.length-1-i;j++){
if (arr[j]<arr[j+1]){
temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
for (int i = 0;i< arr.length;i++){
System.out.println(arr[i]);
}
}
}
练习二 、arrays类排列字符
import java.util.Arrays;
import java.util.Scanner;
public class charsort {
public static void main(String[] args) {
char[] arr = {'a','c','e','w','t','b'};
Arrays.sort(arr);
char a;
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要查找的字符");
a = sc.next().charAt(0);
for (int i = 0;i< arr.length;i++){
if (a == arr[i]){
System.out.println("有该字符,是第" + (i+1)+"个");
}
}
}
}
练习三、显示班级学生总成绩
import java.util.Scanner;
public class exercise1 {
public static void main(String[] args) {
double[][] a = new double[3][5];
double[] num = new double[3];
Scanner sc = new Scanner(System.in);
for (int i = 0;i < a.length;i++){
for (int j = 0;j < a[i].length;j++){
System.out.print("请输入第" + (i+1) + "班,第" + j +"个学生的成绩:");
a[i][j] = sc.nextDouble();
num[i] += a[i][j];
}
}
for (int i = 0;i < num.length; i++){
System.out.println("请输入第" + (i+1) + "班的总成绩:" +num[i]);
}
}
}