虽然两种都能实现,但是第一种效率非常差,甚至不能称为冒泡排序。
for (int j = 0 ; j < arr.length - 1 ; j++) {
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i] > arr[i + 1]) {
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
这里每次 i 的变化范围是 0 - 3,也就是每次都要比较4次,故称不是规范的冒泡排序/
for (int j = 0 ; j < arr.length - 1 ; j++) {
for (int i = 0; i < arr.length - j - 1; i++) {
if (arr[i] > arr[i + 1]) {
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
而这一段 变化在 i < arr.length - j - 1 ,每次减去已经比较好的次数。
i 的变化分别是 0,1,2,3 -> 0,1,2 -> 0,1 -> 0
即比较 4 , 3, 2, 1 次。