1
1
package com .segmentfault .deep .in .java .collection .algorithm ;
2
2
3
- import java .util .stream . Stream ;
3
+ import java .util .Arrays ;
4
4
5
5
public class BubbleSort <T extends Comparable <T >> implements Sort <T > {
6
6
@@ -16,30 +16,36 @@ public void sort(T[] values) {
16
16
// Given array : [3,1,2,5,4]
17
17
// for 1 |
18
18
// 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 ;
28
27
// [0] = 3 , [1] = 2
29
28
// [1] = [1](2) + [0](3) = 5
30
29
// [0] = [1](5) - [0](3) = 2
31
30
// [1] = [1](5) - [0](2) = 3
32
- break ;
33
31
}
34
32
}
33
+ System .out .printf ("第%d轮:%s\n " , i + 1 , Arrays .toString (values ));
35
34
}
36
35
}
37
36
38
37
public static void main (String [] args ) {
38
+ System .out .println ("一般情况" );
39
39
Integer [] values = Sort .of (3 , 1 , 2 , 5 , 4 );
40
40
Sort <Integer > sort = new BubbleSort <>(); // Java 7 Diamond 语法
41
41
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 ));
43
49
}
44
50
45
51
}
0 commit comments