1.多维数组
多维数组可以看做是数组的数组,比如二维数组就是一个特殊的一维数组,其每个元素都是一个一维数组。
二维数组:
int a[][]=new int [2][5];
解析:以上二维数组a可以看成一个两行五列的数组。(嵌套数组)
int [][]b={{1,2},{2,3}};//相当于[2][2]
for (int i = 0; i
2.Arrays类
数组的工具类java.util.Arrays
由于数组对象本身并没有什么方法可以供我们调用,但API中提供一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作。
查看JDK帮助文档
Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而不用使用对象来调用(不用不是不能!!!!)
具有以下常用功能:
给数组赋值:通过fill方法
给数组排序:通过sort方法,按升序
比较数组:通过equals方法比较数组中的元素值是否相等
查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。
public static void main(String[] args) {
int []a={1,2,6,8,999,77,888,555};
System.out.println(a);//直接输出a是一个对象 [I@1b6d3586
//打印数组元素
System.out.println(Arrays.toString(a));//[1, 2, 6, 8, 999, 77, 888, 555]
System.out.println("==================");
printArrays(a);//[1, 2, 6, 8, 999, 77, 888, 555]
Arrays.sort(a);//排序数组元素,升序方式
printArrays(a);//[1, 2, 6, 8, 77, 555, 888, 999]
Arrays.fill(a,0);//第一个参数是数组,第二个是所赋的值(这次调用的方法是全体赋值)
System.out.println(Arrays.toString(a));//[0, 0, 0, 0, 0, 0, 0, 0]
}
//重复造轮子(Arrays.toString方法使用类似)
public static void printArrays(int[]a){
for (int i = 0; i
3.冒泡排序
最出名的排序算法之一,总共有八种排序
冒泡的代码还是比较简单的,两层循环,外层冒泡轮数,里层依次比较。
时间复杂度O(n2);
public static int [] sort(int []arr){
//外层循环,判断要走多少次
int temp=0;//建立临时变量
for (int i = 0; i arr[j]){//(大到小排序)
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
return arr;
}
4.稀疏数组
要求:编写五子棋游戏中,有存盘退出和上盘的功能。
用二维数组来保存棋子,0表示无棋子,1表示黑棋,2表示白棋。
分析问题:因为该二维数组的很多值是默认值0,因此纪录了很多没有意义的数据。
解决方案:稀疏数组。(压缩)
介绍:
当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。
#稀疏数组的处理方式是:
纪录数组一共几行几列,有多少个不同值
把具有不同值的元素和行列几值纪录在一个小规模的数组中,从而缩小程序的规模。
右边的是这个二维数组对应的稀疏矩阵,因为这个数组除了0以外只有8个不同的数字,然后第一行意思是,这是一个6行7列的数组,除0以外有8个不同的值。然后下面几行都是对应这些不同的值,还有他们的坐标,比如:22在第一行,第4列的坐标上,然后数组表示就是[0][3]位置



