JAVA学习第十九天
Arrays类中有很多供数组使用的方法,最常见的有输出数组、给数组中的元素排序等。
使用Arrays类需要先导入包,输入Arrays即可导入,导入包之后就可以引用Arrays类中的各种方法。
例
-
给数组中的元素排序:Arrays.sort(数组);(此方法只给元素排序,并不输出,排序后输出还需和输出方法连用);(升序排序)
-
输出数组:System.out.println(Arrays.toString(数组));
-
填充数组(覆盖已有元素):Arrays.fill(数组,val:需要替换为的元素)(替换全部元素)
Arrays.fill(数组,a,b val:需要替换为的元素)(替换第a,第a+1,......,第b-1个元素,第几个指的是数组中元素的下标)。
等。
冒泡排序(重要)
思路
-
从后往前以此比较大小,若前面的数更大,则交换这两个数的位置;
-
一轮过后,最小的数就会到最前面,因此在第二轮就可以少比较一次;
-
不断循环,直到得到最后的结果。
代码
public static int[] sort(int[] array){
int temp = 0;
for (int i = 0; i < array.length-1; i++) {
for (int j = 0; j < array.length-1-i; j++) {
if (array[j-1] >array[j]){
temp = array[j-1];
array[j-1] = array[j];
array[j] = temp;
}
}
}
return array;
}
此处以一个方法的形式给出。
稀疏数组(数据结构)
在一些情况下,我们利用数组储存数据时会有很多相同的数据,或者在一个长度很大的数组中只有几个数是有效的,其他的数都是0,而用数组储存数据时会浪费空间,此时我们可以用稀疏数组来储存。
结构
稀疏数组相当于一个表格,结构是:
(行 列 数值)
数组总行数 数组总列数 数组中的有效数值个数
第一个有效数值所在行 第一个有效数所在列 第一个有效值的值
......
最后一个有效数值所在行 最后一个有效数所在列 最后一个有效值的值
此处的第一个、第二个...是从左上到右下排序
例
public class ArrayDemo09 {
public static void main(String[] args) {
//1.创建一个棋盘; 1代表黑子,2代表白子。
int[][] array01 = new int[11][11];
array01[3][4] = 1;
array01[5][6] = 2;
array01[6][8] = 2;
//2,输出原始的数组:
System.out.println("原始的数组:"+"\t");
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
System.out.print(array01[i][j]+" ");
}
System.out.println();
}
//3.输出稀疏数组
int sum = 0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (array01[i][j] != 0){
sum++;
}
}
}
System.out.println("有效值的个数:"+sum);
System.out.println("稀疏数组:");
int[][] array02 = new int[sum+1][3];
array02[0][0] = 11;
array02[0][1] = 11;
array02[0][2] = sum;
int count = 0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (array01[i][j] !=0){
count++;
array02[count][0] = i;
array02[count][1] = j;
array02[count][2] =array01[i][j];
}
}
}
for (int i = 0; i < 