思路
1、依次比较相邻元素的大小,若前一个比后一个大,则交换位置,最后的元素将会是最大值;
2、对剩下的元素重复以上步骤。
图示
代码
算法
/**
* 冒泡排序
*
* @param data
*/
public static void bubbleOrder(int[] data) {
for (int i = data.length - 1; i > 0; i--) {
// 依次比较相邻元素的大小(尾部已经排好序的部分不需要再次比较)
for (int j = 0; j < i; j++) {
// 若前一个比后一个大,则交换位置
if (data[j] > data[j + 1]) {
exchange(data, j, j + 1);
}
}
}
}
private static void exchange(int[] data, int i, int j) {
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
测试
public static void main(String[] args) {
int[] data = {5, 4, 3, 2, 1};
bubbleOrder(data);
System.out.println(Arrays.toString(data));
}
结果
[1, 2, 3, 4, 5]