- 第一趟:相邻比较,若 前 > 后, 交换位置,直到最后一个位置为max
- 第二趟:相邻比较,若 前 > 后, 交换位置,直到倒数第二个位置为max(除最后一个位置)
- 第n趟:......
@Test
public void test1(){
int[] arr = {7,6,5,4,3,2,1,1};
int temp;
//比较趟数。共length - 1趟
for (int i = 1; i < arr.length; i++) {
//每趟比较次数 第一趟:6次 length - 1
for (int j = 0; j < arr.length - i; j++) {
if (arr[j] > arr[j + 1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for (int j : arr) {
System.out.print(j + " ");
}
}
优化
判断是否已经有序?
@Test
public void test2() {
int[] arr = {9,5,4,3,6,7,11,5};
int temp;
//比较趟数。共length - 1趟
for (int i = 1; i < arr.length; i++) {
//假设是排好序的
boolean flag = true;
//每趟比较次数 第一趟:6次 length - 1
for (int j = 0; j < arr.length - i; j++) {
if (arr[j] > arr[j + 1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
//发生了交换,则是未排好序的
flag = false;
}
}
if (flag) {
//说明是排好序的
break;
}
}
for (int j : arr) {
System.out.print(j + " ");
}
}
标签:arr,temp,int,冒泡排序,第一趟,++,length
From: https://www.cnblogs.com/9fall/p/17595656.html