數組
二維數組
可以簡單理解爲在數組中又存儲了數組
Arrays的使用
遍歷: toString() 將數組的元素以字符串的形式返回
排序: sort() 將數組按照升序排列
查找: binarySearch()在指定數組中查找指定元素,返回元素的索引,如果沒有找到返回(-插入點-1) 注意:使用查找的功能的時候,數組一定要先排序。
兩種初始化形式
格式1: 動態初始化
數據類型 數組名 [ ][ ] = new 數據類型[m][n]
數據類型 [ ][ ] 數組名 = new 數據類型[m][n]
數據類型 [ ] 數組名 [ ] = new 數據類型[m][n]
舉例:int [ ][ ] arr=new int [5][3]; 也可以理解爲“5行3例”
格式2: 靜態初始化
數據類型 [ ][ ] 數組名 = {{元素1,元素2....},{元素1,元素2....},{元素1,元素2....}.....};
舉例:int [ ][ ] arr={{22,15,32,20,18},{12,21,25,19,33},{14,58,34,24,66},};
1.聲明並初始化
//一維:
int[] i = new int[12];
i[0] = 12;
int[] j = new int[]{12,3};
//二維:
1)String[][] str = new String[4][3]; //4行3列
2)String[][] str1 = new String[4][];
str1[0] = new String[3];
...
str1[3] = new String[5];
3)
int[][] arr = new int[][]{{1,2,3},{4,5},{6}};
2.如何引用二維數組的元素:arr[1][0] = 12;
3.二維數組的長度:arr.length;//3
arr[1].length;//2
4.遍歷二維數組
for(int i = 0;i < arr.length;i++){
for(int j = 0;j < arr[i].length;j++){
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
數組的常見異常
int[] i = new int[10];
i[0] = 90;
i[10] = 99;
for(int m = 0;m <= i.length;m++){
System.out.println(i[m]);
}
第一種:
boolean[] b = new boolean[3];
b = null;
System.out.println(b[0]);
第二種:
String[] str = new String[4];
//str[3] = new String("AA");//str[3] = "AA";
System.out.println(str[3].toString());
第三種:
int[][] j = new int[3][];
j[2][0] = 12;
數組的常用算法問題
2.數組的複製和反轉
數組的反轉:
// 數組元素的反轉
// for(int i = 0;i < arr.length/2;i++){
// int temp = arr[i];
// arr[i] = arr[arr.length-1 - i];
// arr[arr.length - 1 - i] = temp;
// }
for (int x = 0, y = arr.length - 1; x < y; x++, y--) {
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
拓展:String str = "abcdefg";
數組的排序:
插入排序
直接插入排序、折半插入排序、Shell排序
交換排序
冒泡排序、快速排序(或分區交換排序)
選擇排序
簡單選擇排序、堆排序
歸併排序
基數排序
使用冒泡排序使數組元素從小到大排列
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]) {
int temp = arr[j];
arr[j] = arr[j + 1];
}
}
}
//使用直接選擇排序使數組元素從小到大排列
for(int i = 0; i < arr.length - 1; i++){
int t = i;//默認i處是最小的
for(int j = i;j < arr.length;j++){
//一旦在i後發現存在比其小的元素,就記錄那個元素的下角標
if(arr[t] > arr[j]){
t = j;
}
}
if(t != i){
int temp = arr[t];
arr[t] = arr[i];
arr[i] = temp;
}
}
還可以調用:Arrays工具類:Arrays.sort(arr);