1.数组
数据结构(1)数组
0.概述
分为线性结构:数据元素一对一线性关系
数组、队列、链表、栈
顺序存储、链式存储;
非线性结构:图、树等
1.数组
1.1稀疏数组
数组中大部分为0或某定值
处理方法:
1)记录数组几行几列,有多少个值;
2)对应元素及其行列号用数组记录。
public class SparseArray {
public static void main(String[] args) {
//创建原始数组
int[][] chessArr = new int[11][11];
chessArr[2][1] = 1;
chessArr[1][9] = 4;
chessArr[8][3] = 33;
chessArr[5][5] = 2;
//遍历原始数组
System.out.println("原始数组:");
int sum = 0;
for (int[] arr : chessArr) {
for (int a : arr) {
System.out.print(a + " ");
if (a != 0) sum++;
}
System.out.println();
}
//创建稀疏数组
int[][] sparseArr = new int[sum + 1][3];
//记录行列数和元素数
sparseArr[0][0] = 11;
sparseArr[0][1] = 11;
sparseArr[0][2] = sum;
//遍历原始数组添加元素
int count = 1;//记录元素个数
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (chessArr[i][j] != 0) {
sparseArr[count][0] = i;
sparseArr[count][1] = j;
sparseArr[count][2] = chessArr[i][j];
count++;
}
}
}
//输出稀疏数组
System.out.println("稀疏数组:");
for (int i = 0; i < sparseArr.length; i++) {
System.out.printf("%d\t%d\t%d\n", sparseArr[i][0], sparseArr[i][1], sparseArr[i][2]);
}
//恢复原始数组
int[][] chessArr1 = new int[sparseArr[0][0]][sparseArr[0][1]];
for (int i = 1; i
