思路分析
首先从第一个元素开始遍历,前一个与后一个进行比较,小的元素放到前面,一直到末尾,遍历可获得最大元素(最后的元素),依次遍历,直到排序完毕
代码实现
package DataStructures;
/**
* 冒泡排序,从第一个元素开始遍历,前一个与后一个比较,小的放到前面,一直到末尾,每次遍历
* 最后的元素为最大值
*/
public class Bubble {
public static int[] bubbleSort(int[] arr) {
if (arr == null || arr.length < 2) {
return arr;
}
// 从n-1开始, 每次可获取最大值
for (int i = arr.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
// 大的放到后面
if (arr[j] > arr[j + 1]) {
swap(arr, j, j + 1);
}
}
}
return arr;
}
public static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
测试代码
package DataStructuresTest;
import DataStructures.Bubble;
public class BubbleTest {
public static void main(String[] args) {
int[] arr = {3, 5, 1, 2, 8, 7, 4};
int[] result = Bubble.bubbleSort(arr);
for (int i: result) {
System.out.println(i);
}
}
}