每次从数组中取出一个最大的元素,最大元素是通过排除法排除非最大元素得到的
public class BubbleSort {
public static int[] bubbleSort(int[] array) {
//临时变量
int temp;
//数组长度
int len=array.length;
//每次循环都在遍历的数组范围中确定一个最大的值,遍历范围递减
for (int i = 0; i < len; i++) {
//j<len-1-i表示遍历范围中排除右边已确定大小的元素
//比较相邻位置的值并交互,每次比较都会排除范围中一个非最大的值
//每次内循环结束后都会通过排除法找到范围中一个最大的值
for (int j = 0; j < len - 1 - i; j++) {
if (array[j] > array[j + 1]) {
//交互位置,值小的数在前
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
return array;
}
}
测试类:
public class TestSort {
int[] array = {8, 1, 6, 7, 3, 5, 2, 4};
@Test
public void bubbleSort() {
int[] sort = BubbleSort.bubbleSort(array);
for (int i : sort) {
System.out.println(i);
}
}
}