Array類、氣泡排序、稀疏陣列
阿新 • • 發佈:2021-10-11
Arrays類中的方法都是static修飾的靜態方法,在使用的時候可以直接使用類名進行呼叫,而“不用”使用物件來呼叫(注意:是“不用”而不是“不能”)
常用功能:
-
給陣列賦值:通過fill方法
-
對陣列排序:通過sort方法,按升序
-
比較陣列:通過equals方法比較陣列中元素值是否相等
-
查詢陣列元素:通過binarySearch方法能對排序好的陣列進行二分查詢操作
氣泡排序
兩層迴圈,外層冒泡,裡層依次比較
1、比較陣列中,兩個相鄰的元素,如果前一個數比後一個數大,則交換位置
2、每一次比較,都會產生一個最大的數或者最小的數
3、下一輪則可以少一次排序
4、依次迴圈,直到結束
稀疏陣列
-
當一個數組中大部分元素為0,或者為同一個值的陣列時,可以使用稀疏陣列來儲存該陣列。
-
稀疏陣列的處理方式:
-
記錄陣列一共有幾行幾列,有多少個不同值
-
把具有不同值的元素和行列及值記錄在一個小規模的陣列中,從而縮小程式的規模
-
把二維陣列轉換為稀疏陣列在轉換為二維陣列
package com.dashu.array;
public class ArrayDemo08 {
public static void main(String[] args) {
//1.建立一個二維陣列11*11 0:沒有棋子 1:白棋 2:黑棋
int[][] array1 = new int[11][11];
array1[1][2] = 1;
array1[2][3] = 2;
//輸出原始的陣列
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 < 11; i++) {
for (int j = 0; j < 11; 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];
}
}
}
for (int i = 0; i < array2.length; i++) {
System.out.