盒子
盒子

冒泡排序

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
/**
* 冒泡排序
*
* 从左到右不断交换相邻逆序的元素,在一轮循环后,可以让未排序的最大元素上浮至最右侧
* 在一轮循环中,如果没有发生交换,则说明此时数组已经有序,可以直接退出
*
* @author Jian Shen
* @version V1.0.0
* @date 2019/7/20
*/
public class BubbleSort<T extends Comparable<T>> extends Sort<T> {

@Override
public void sort(@NotNull T[] array) {
int length = array.length;
boolean sorted = false;
for (int i = length - 1; i > 0 && !sorted; i--) {
sorted = true;
for (int j = 0; j < i; j++) {
if (less(array[j + 1], array[j])) {
sorted = false;
swap(array, j, j + 1);
}
}
}
}

public static void main(String[] args) {
Sort sort = new BubbleSort();
Integer[] array = new Integer[]{1, 3, 2, 4, 4, 9, 10, 3};
sort.sort(array);
System.out.println(Arrays.asList(array));
}
}

更多排序算法见github

支持一下
扫一扫,支持沈健
  • 微信扫一扫
  • 支付宝扫一扫