冒泡排序

冒泡排序

详细参考

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
package com.coral.learning.alg.udemo.algorithms.sort;

/**
* 冒泡排序
*
* 它重复地走访过要排序的元素列,一次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。
* 走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。
* 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
*/
public class BubbleSort implements Sort {
public static void main(String[] args) {
int[] numbers = {34, 12, 23, 56, 56, 56, 78};
BubbleSort bubbleSort = new BubbleSort();
System.out.println("BubbleSort");
bubbleSort.sort(numbers);

}


@Override
public void sort(int[] arr) {

for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {//-1为了防止溢出
print(arr);
if (arr[j] > arr[j + 1]) {
swap(arr, j, j + 1);
}
}
}
}

}