冒泡排序( bubble sort )–>交换类排序
基本思想:
两两比较相邻记录的关键字,如果逆序则交换,直到没有逆序记录为止
排序的分类
图解
核心代码:(交换位置)
temp = arr[ j-1 ];
arr[ j-1 ] = arr[ j ];
arr[ j ] = temp;
思路:
- 两个 for 循环嵌套,
2. 外循环从头循环,递加到尾,进行比较
3. 内循环从尾循环,递减到 i ,进行交换位置
代码优化:
外循环执行一次,若没有发生交换,则说明已有序,在内循环立一个 flag ,如果内循环的 if 语句没有执行,则表明已有序 ,有序以后就不需要再进行比较直接退出
时间复杂度:
O(n^2)
代码
int[] arr = new int[]{1, 3, 2, 0, 5, 6,9};
boolean flag = true;//标记是否换位置
int temp;
for (int i = 0; i < arr.length-1; i++) { //下标从 0 开始,所以是 length—1
for (int j = arr.length - 1; j > i; j--) {
flag = false;
if(arr[j - 1] > arr[j]) {
temp = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = temp;
flag = true;
}
}
if (!flag) {
break;
} else {
flag = false;
}
}
System.out.println(Arrays.toString(arr));