Java基础 day06
Java基础 day06
Arrays类
import java.util.Arrays;
//切勿重复造轮子
public class day06 {
public static void main(String[] args) {
int[] a = {1,3,2,5,4};
System.out.println(a);
Arrays.sort(a);//排序,正序
System.out.println(Arrays.toString(a));
Arrays.fill(a,0);//数组全都填充val值
System.out.println(Arrays.toString(a));
Arrays.fill(a,1,3,1);//[1,3)填充val
System.out.println(Arrays.toString(a));
}
}
输出结果:
[I@1b6d3586
[1, 2, 3, 4, 5]
[0, 0, 0, 0, 0]
[0, 1, 1, 0, 0]
冒泡排序
两层循环,外层冒泡轮数,里层一次比较,江湖人尽皆知
import java.util.Arrays;
//冒泡排序
public class Day06_2 {
public static void main(String[] args) {
int[] a = new int[]{3,1,5,8,6,2};
sort(a);
System.out.println(Arrays.toString(a));
}
public static void sort(int[] arrays) {
//int i = 0;
for (int j = 0; j < arrays.length-1; j++) {
for (int i = 0; i < arrays.length - j - 1; i++) {
if (arrays[i] > arrays[i + 1]) {
int temp = arrays[i];
arrays[i] = arrays[i + 1];
arrays[i + 1] = temp;
}
}
}
}
}
稀疏数组
一种数据结构
-
当一个数组中大多元素为0,或者为同一值时,可以使用稀疏数组来保存该数组。
-
稀疏数组的处理方式:
- 记录数组共有几行几列,有多少不同值
- 把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模-
-
如下图:左边是原始数组,右边是稀疏数组

//稀疏数组的实现与还原
//****注意(多维)二维数组的各长度如何表示****
public class Day06_3 {
public static void main(String[] args) {
int[][] arrays = new int[11][11];
arrays[1][2] = 1;
arrays[2][3] = 2;
System.out.println("原始数组如下:");
printArray(arrays);
//System.out.println(arrays.length);
System.out.println("转换成稀疏数组如下:");
alert(arrays);
}
//打印数组
static void printArray(int[][] arrays) {
for (int[] ints : arrays) {
for (int anInt : ints) {
System.out.print(anInt + "\t");
}
System.out.println();
}
}
static void alert(int[][] arrays) {
//获取有效值个数
int sum = 0;
for (int[] ints : arrays) {
for (int anInt : ints) {
if (anInt != 0) {
sum++;
}
}
}
//创建稀疏数组
int[][] arrays2 = new int[sum+1][3];
arrays2[0][0] = arrays.length;
arrays2[0][1] = arrays[0].length;
arrays2[0][2] = sum;
//赋值
int count = 0;
for (int i = 0; i < arrays.length; i++) {
for (int j = 0; j < arrays[i].length; j++) {
if (arrays[i][j] != 0) {
count++;
arrays2[count][0] = i;
arrays2[count][1] = j;
arrays2[count][2] = arrays[i][j];
}
}
}
for (int[] i:arrays2) {
for (int j : i) {
System.out.print(j + "\t");
}
System.out.println();
}
System.out.println("###################");
System.out.println("还原成原数组:");
//创建数值数组
int[][] arrays3 = new int[arrays2[0][0]][arrays2[0][1]];
//赋值
for (int i = 1; i < arrays2.length; i++) {
arrays3[arrays2[i][0]][arrays2[i][1]] = arrays2[i][2];
}
//打印
printArray(arrays3);
}
}
结果
原始数组如下:
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
转换成稀疏数组如下:
11 11 2
1 2 1
2 3 2
###################
还原成原数组:
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0

浙公网安备 33010602011771号