思想:
每次比较两个相邻的元素,将较大的元素交换至右端。
图解:
每排序一趟 确定一个数(从后至前)
代码实现:
package i.DS.base;
import java.util.Arrays;
import java.util.Random;
//冒泡排序法
/*
时间复杂度:O(n^2) 优化之后:时间复杂度:O(n)
空间复杂度:O(1)
具有稳定性
*/
public class TestBubbleSort {
public static void bubbleSort(int[] array) {
for (int i = 1; i < array.length; i++) { // 趟数
boolean flag = true;
for (int j = 0; j < array.length - i; j++) {
if (array[j + 1] < array[j]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
flag = false;
}
}
if (flag) {
break;
}
}
}
public static void main(String[] args) {
int array1[]=new int[20];
Random random=new Random();
for(int i=0;i<array1.length;i++){
array1[i]=random.nextInt(300)+1;
}
bubbleSort(array1);
System.out.println(Arrays.toString(array1));
}
}
输出结果: