算法思想
每次比较相邻元素,如果它们的顺序错误则将它们交换过来。
该算法的思想非常简单,每次都能将一个最大或者最小的泡泡冒到最上面。
比如,我们需要将 12 35 99 18 76 这 5 个数从大到小排序。
- 12 与 35 比较,发现 12 < 35 交换后为:35 12 99 18 76。
- 12 与 99 比较,发现 12 < 99 交换后为:35 99 12 18 76。
- 按上述顺序进行下去,则可以使得最小元素归位:35 99 18 76 12。
- 一次可以归位一个元素,再进行 4 次 上述操作,则 5 个数都能归位
实现
/**
* 冒泡排序
*
* @author ychost
* @date 2018-4-2
*/
public class BubbleSort {
public static void sort(int[] array) {
for (int i = 0; i < array.length; i++) {
//这里 array.length - 1 - i
//每次进入循环的时候后面的 i 个元素都归位了
for (int j = 0; j < array.length - 1 - i; j++) {
if (array[j] > array[j + 1]) {
swap(array, j, j + 1);
}
}
}
}
static void swap(int[] array, int i, int j) {
int tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
}