java学习笔记——java数组03.Arrays类与数组练习
Arrays类与数组练习
一、Arrays类
import java.util.Arrays;
Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而不用适用对象来调用。
具有以下常用功能:
- 给数组赋值:fill
- 对数组排序:sort(升序)
- 比较数组:equals
- 查找数组元素:binarySearch,对排序好的数组进行二分查找
二、数组练习
-
冒泡排序
import java.util.Arrays; public class Demo { public static void main(String[] args) { int[] a = {10,19,5,72,68,42,45,41,8}; int[] sort = sort(a); System.out.println(Arrays.toString(sort)); } 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]; array[j] = array[j+1]; array[j+1] = temp; } } } return array; } }
-
稀疏数组
当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。
记录数组一共有几行几列,有多少个不同值。
如下图:左边是原始数组,右边是稀疏数组。
练习:将一个棋盘数组存储在稀疏数组中并还原
第一步:输出原始数组
//创建原始数组11*11 0:没有棋子 1:黑棋 2:白棋 int[][] array1 = new int[11][11]; array1[1][2] = 1; array1[2][3] = 2; //输出原始数组 System.out.println("原始数组:"); for (int[] x : array1){ for (int y : x){ System.out.print(y+"\t"); } System.out.println(); }
第二步:创建稀疏数组并存储原始数组的有效数据
//将原数组存储在稀疏数组中 //首先获取有效值的个数,决定稀疏数组的行数 int sum = 0; for (int i = 0; i <array1.lengt for (int j = 0; j < array1[ if (array1[i][j]!=0){ sum++; } } } //创建稀疏数组 int[][] array2 = new int[sum+1] array2[0][0] = 11; array2[0][1] = 11; array2[0][2] = sum; //将非零值存放到稀疏数组中 //获取有效值的个数,赋值到稀疏数组的对应行中的每一列 int count = 0; for (int i = 0; i <array1.lengt for (int j = 0; j < array1[ if (array1[i][j]!=0){ count++; array2[count][0] = array2[count][1] = array2[count][2] = } } } //输出稀疏数组 System.out.println("稀疏数组:"); for (int[] x : array2){ for (int y : x){ System.out.print(y+"\t" } System.out.println(); }
int[][] array3 = new int[array2[0][0]][array2[0][1]]; for (int i = 1; i < array2.length; i++){ array3[array2[i][0]][array2[i][1]] = array2[i][2]; } //输出还原后的数组 System.out.println("还原数组:"); for (int[] x : array3){ for (int y : x){ System.out.print(y+"\t"); } System.out.println();