Skip to content

Commit 12f678c

Browse files
authored
Merge pull request mercyblitz#11 from Yuhuiyang-Dev/master
修复代码错误和描述错误
2 parents 8838fe5 + 9af699d commit 12f678c

File tree

6 files changed

+45
-29
lines changed

6 files changed

+45
-29
lines changed

「一入 Java 深似海 」/代码/segmentfault/deep-in-java/stage-2/lesson-3/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<relativePath>../pom.xml</relativePath>
1010
</parent>
1111
<modelVersion>4.0.0</modelVersion>
12-
<name>「一入 Java 深似海 」系列 :: 第二期 :: 第二节</name>
12+
<name>「一入 Java 深似海 」系列 :: 第二期 :: 第三节</name>
1313
<artifactId>stage-2-lesson-3</artifactId>
1414

1515

「一入 Java 深似海 」/代码/segmentfault/deep-in-java/stage-2/lesson-4/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<version>1.0-SNAPSHOT</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
11-
11+
<name>「一入 Java 深似海 」系列 :: 第二期 :: 第三节</name>
1212
<artifactId>stage-2-lesson-4</artifactId>
1313

1414

Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.segmentfault.deep.in.java.collection.algorithm;
22

3-
import java.util.stream.Stream;
3+
import java.util.Arrays;
44

55
public class BubbleSort<T extends Comparable<T>> implements Sort<T> {
66

@@ -16,30 +16,36 @@ public void sort(T[] values) {
1616
// Given array : [3,1,2,5,4]
1717
// for 1 |
1818
// for 2 |
19-
for (int i = 0; i < size; i++) {
20-
// 第 i 号元素
21-
T t = values[i]; // 产生临时变量
22-
for (int j = i + 1; j < size; j++) {
23-
// 第 i 号元素与 i + 1 对比
24-
if (t.compareTo(values[j]) == 1) { // 低位 > 高位
25-
// 交换元素 [i + 1] = [i]
26-
values[i] = values[j];
27-
values[j] = t;
19+
for (int i = 0; i < size - 1; i++) {
20+
for (int j = 0; j < size - i - 1; j++) {
21+
// 第 j 号元素与 j + 1 对比
22+
if (values[j].compareTo(values[j + 1]) == 1) { // 低位 > 高位
23+
// 交换元素
24+
T t = values[j];
25+
values[j] = values[j + 1];
26+
values[j + 1] = t;
2827
// [0] = 3 , [1] = 2
2928
// [1] = [1](2) + [0](3) = 5
3029
// [0] = [1](5) - [0](3) = 2
3130
// [1] = [1](5) - [0](2) = 3
32-
break;
3331
}
3432
}
33+
System.out.printf("第%d轮:%s\n", i + 1, Arrays.toString(values));
3534
}
3635
}
3736

3837
public static void main(String[] args) {
38+
System.out.println("一般情况");
3939
Integer[] values = Sort.of(3, 1, 2, 5, 4);
4040
Sort<Integer> sort = new BubbleSort<>(); // Java 7 Diamond 语法
4141
sort.sort(values);
42-
Stream.of(values).forEach(System.out::println);
42+
System.out.printf("排序结果:%s\n", Arrays.toString(values));
43+
44+
System.out.println("完全逆序");
45+
values = Sort.of(5, 4, 3, 2, 1);
46+
sort = new BubbleSort<>();
47+
sort.sort(values);
48+
System.out.printf("排序结果:%s\n", Arrays.toString(values));
4349
}
4450

4551
}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.segmentfault.deep.in.java.collection.algorithm;
22

3-
import java.util.stream.Stream;
3+
import java.util.Arrays;
44

55
public class InsertionSort<T extends Comparable<T>> implements Sort<T> {
66

@@ -17,20 +17,30 @@ public void sort(T[] values) {
1717
// [j = 0] = 3, [i = 1] = 1 , t = [i = 1] = 1
1818
// [i = 1] = [j = 0] , [j = 0] = t = 1
1919
T t = values[i]; // 产生临时变量
20-
for (int j = i - 1; j >= 0; j--) {
21-
if (t.compareTo(values[j]) < 1) { // 高位 < 低位
22-
values[i] = values[j]; // 高位获取低位的值
23-
values[j] = t; // 低位得到高位的值
24-
}
20+
int j = i;
21+
while (j > 0 && t.compareTo(values[j - 1]) < 0) {
22+
//往后移动让出插入空间
23+
values[j] = values[j - 1];
24+
j--;
2525
}
26+
//插入values[i]到对应位置
27+
values[j] = t;
28+
System.out.printf("第%d轮:%s\n", i, Arrays.toString(values));
2629
}
2730
}
2831

2932
public static void main(String[] args) {
30-
Integer[] values = Sort.of(3, 1, 2, 5, 4);
31-
Sort<Integer> sort = new InsertionSort<>(); // Java 7 Diamond 语法
33+
System.out.println("一般情况");
34+
Integer[] values = Sort.of(3, 2, 1, 5, 4);
35+
Sort<Integer> sort = new InsertionSort<>();
3236
sort.sort(values);
33-
Stream.of(values).forEach(System.out::println);
37+
System.out.println(Arrays.toString(values));
38+
39+
System.out.println("完全逆序");
40+
values = Sort.of(5, 4, 3, 2, 1);
41+
sort = new InsertionSort<>();
42+
sort.sort(values);
43+
System.out.println(Arrays.toString(values));
3444
}
3545

3646
}

「一入 Java 深似海 」/代码/segmentfault/deep-in-java/stage-2/lesson-4/src/main/java/com/segmentfault/deep/in/java/collection/algorithm/QuickSort.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,22 +63,22 @@ int partition(T[] values, int low, int high) {
6363
// pIndex = 3
6464

6565
T pivot = values[high];
66-
int i = low - 1;
66+
int i = low;
6767

6868
for (int j = low; j < high; j++) {
6969
if (values[j].compareTo(pivot) < 1) { // <=
70-
i++; // -1 -> 0
7170
T temp = values[i]; // 低位数据
7271
values[i] = values[j]; // 低位数据获取高位数据
7372
values[j] = temp;
73+
i++; // -1 -> 0
7474
}
7575
}
7676

77-
T temp = values[i + 1];
78-
values[i + 1] = values[high];
77+
T temp = values[i];
78+
values[i] = values[high];
7979
values[high] = temp;
8080

81-
return i + 1; // 游标+1
81+
return i;
8282
}
8383

8484
public static void main(String[] args) {

「一入 Java 深似海 」/代码/segmentfault/deep-in-java/stage-3/stage-3-lesson-1/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<version>1.0-SNAPSHOT</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
11-
11+
<name>「一入 Java 深似海 」系列 :: 第三期 :: 第一节</name>
1212
<artifactId>stage-3-lesson-1</artifactId>
1313

1414

0 commit comments

Comments
 (0)