【Java菜鸟日记10】冒泡排序与稀疏数组


前言

今天学习了冒泡排序和稀疏数组,手搓一下练习

冒泡排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.Mycode;
import java.util.Arrays;

public class BubbleSort {
static int temp = 0;
static void main(String[] args) {

int[] arr = {1,3,5,6,6,3,3,2,67,74};
int[] reslut = BubbleSort(arr);
System.out.println(Arrays.toString(arr));

}

public static int[] BubbleSort(int[] arr){
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]){
temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
return arr;
}
}

运行结果

1
[74, 67, 6, 6, 5, 3, 3, 3, 2, 1]

收获

冒泡排序还是较简单的,接下来是稀疏数组

稀疏数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.Mycode;
import java.util.Arrays;
public class SparseArray {
//全局声明
static int[][] arrays_1 = new int[12][12];//原数组
static int Effective_num = 0;//有效值

//主函数
static void main(String[] args) {

arrays_1[6][6] = 1;
arrays_1[7][7] = 2;
System.out.println("原数组:");
PrintArrays(arrays_1);
Line();
Calculate_the_effective_value();
Line();
SparseArray();
Line();
}
//分割线
public static void Line(){
System.out.println("-----------------");
}
//输出数组
public static void PrintArrays(int[][] arr) {
for (int[] ints : arr) {
System.out.println(Arrays.toString(ints) + "\t");
}

}
//计算有效值
public static void Calculate_the_effective_value(){
for (int i = 0; i < arrays_1.length; i++) {
for (int j = 0; j < arrays_1.length; j++) {
if (arrays_1[i][j] != 0)
Effective_num++;
}
}
System.out.print("有效值为:");
System.out.println(Effective_num);
}
//稀疏数组
public static void SparseArray(){
int[][] arrays_2 = new int[Effective_num + 1][3];
arrays_2[0][0] = 12;
arrays_2[0][1] = 12;
arrays_2[0][2] = Effective_num;

int Savetoarrays_2 = 0;
for (int i = 0; i < arrays_1.length; i++) {
for (int j = 0; j < arrays_1[i].length; j++) {
if (arrays_1[i][j] != 0) {
Savetoarrays_2++;
arrays_2[Savetoarrays_2][0] = i;
arrays_2[Savetoarrays_2][1] = j;
arrays_2[Savetoarrays_2][2] = arrays_1[i][j];
}
}
}
System.out.println("稀疏数组:");
for (int j = 0; j < arrays_2[0].length; j++) {
if(j == 0)
System.out.print("表头\t");
else
System.out.print("有效值\t");

for (int i = 0; i < arrays_2.length; i++) {

System.out.print(arrays_2[j][i] + "\t");
}
System.out.println();
}
//还原阶段
int[][] arrays_3 = new int[arrays_2[0][0]][arrays_2[0][1]];

for(int i = 1;i<arrays_2.length;i++){
arrays_3[arrays_2[i][0]][arrays_2[i][1]] = arrays_2[i][2];
}
System.out.println("还原后的数组:");
PrintArrays(arrays_3);
}


}

运行结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
"C:\Program Files\Java\jdk-26.0.2\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib\idea_rt.jar=62114" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath C:\Users\Yayoi\IdeaProjects\test\out\production\test com.Mycode.SparseArray
原数组:
[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, 1, 0, 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]
-----------------
有效值为:2
-----------------
稀疏数组:
表头 12 12 2
有效值 6 6 1
有效值 7 7 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, 1, 0, 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]
-----------------

Process finished with exit code 0

收获

这个稀疏数组目前对我而言开始有难度了,但是学到了很多东西,比如在最后阶段的数据读取和还原,不能从表头开始还原数据,还有对于各种嵌套循环和二维数组的理解加深,总的来说受益匪浅。


文章作者: 上江 Yayoi
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 上江 Yayoi !
  目录