Day8.1 关于数组
多维数组
- 
int a[][] = new int[2][5]; - 
可以理解成一个文件夹里面又放置了一个文件夹
 
Arrays类
- 
工具类java.util.Arrays;
 - 
public class Demo06 {
public static void main(String[] args) {
int[] array = {1,2,3,6,4,2};
//输出数组的哈希值
System.out.println(array);
//输出整个数组
System.out.println(Arrays.toString(array));
//调用print方法,与上一句作用相同
print(array);
//进行排序
Arrays.sort(array);
}
public static void print(int[] abc){
for(int i = 0; i < abc.length; i++){
if(i == 0){
System.out.print("[");
}
if(i == abc.length - 1){
System.out.print("]");
}else{
System.out.print(abc[i]+" ");
}
}
}
} 
冒泡排序
- 
比较数组中两个相邻的元素,如果第一个数大于第二个,就交换位置。
 - 
每一次比较都会产生出一个最大或最小的数字。
 - 
下一轮就会少一次排序。
 - 
一次循环直至结束。
 - 
sort()方法
import java.util.Arrays;
/**3,2,2,1,4,5,1
* @author FunnyTime
*/
public class Demo07 {
public static void main(String[] args) {
int[] nums = {1, 3, 2, 5, 1, 3, 3};
int[] sort = sort(nums);
System.out.println(Arrays.toString(sort));
}
public static int[] sort(int[] array) {
//定义一个临时变量
int temp = 0;
for (int i = 0; i < array.length - 1; i++) {
//通过标识位减少没有意义的排序
boolean flag = false;
//内层循环,判断两个数,如果第一个数大于第二个则交换位置,一次循环后最右边的一定是最小值(当改成array[j + 1] < array[j],最右边一定是最大值)
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;
flag = true;
}
}
if(flag == false){
break;
}
}
return array;
}
} 
稀疏数组
- 
当一个数组中大部分元素都是0,或者都是同一个值,可以使用稀疏数组保存该数组。
 - 
处理方式:记录数组一共有几行几列,有多少不同值;把具有不同值的元素和行列及值记录在一个小规模数组中,从而缩小程序的规模。
 - 
示例

 - 
稀疏数组示例,这个代码我现在暂时还无法理解
package array;
/**
* @author FunnyTime
*/
public class Demo08 {
public static void main(String[] args) {
//创建一个二维数组11*11 0:没有棋子 1:黑棋 2:白棋
int[][] array1 = new int[11][11];
array1[1][2] = 1;
array1[2][3] = 1;
//输出原始数组
System.out.println("输出原始数组");
for(int[] ints : array1){
for(int anInt :ints){
System.out.print(anInt+"\t");
}
System.out.println();
}
System.out.println("===========");
//转换为稀疏数组保存
//获取有效值的个数
int sum = 0;
for(int i = 0; i < array1.length; i++){
for(int j = 0; j < array1.length; j++){
if(array1[i][j] != 0){
sum++;
}
}
}
System.out.println("有效值个数为:"+sum);
//创建一个稀疏数组的数组
int[][] array2 = new int[sum + 1][3];
array2[0][0] = 11;
array2[0][1] = 11;
array2[0][2] = sum;
//遍历二维数组,将非零的值,存放在稀疏数组
int count = 0;
for(int i = 0; i < array1.length; i++){
for(int j = 0; j < array1[i].length; j++){
if(array1[i][j] != 0){
count++;
array2[count][0] = i;
array2[count][1] = j;
array2[count][2] = array1[i][j];
}
}
}
//输出稀疏数组
System. 
