Skip to content

Commit 1736dd8

Browse files
committed
修改冒泡排序错误
1 parent df5f5e3 commit 1736dd8

File tree

1 file changed

+18
-12
lines changed
  • 「一入 Java 深似海 」/代码/segmentfault/deep-in-java/stage-2/lesson-4/src/main/java/com/segmentfault/deep/in/java/collection/algorithm

1 file changed

+18
-12
lines changed
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", 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", Arrays.toString(values));
4349
}
4450

4551
}

0 commit comments

Comments
 (0)