我发现了这种冒泡排序(我研究过的第一种排序),我几乎完全理解它,但我被困在一个地方。
public static int[] bubbleSort(int[] tempArray) {
int i, j, temp, n = tempArray.length;
boolean swapped;
for (i = 0; i < n - 1; i++) {
swapped = false;
for (j = 0; j < n - i - 1; j++) {
if (tempArray[j] > tempArray[j + 1]) {
temp = tempArray[j];
tempArray[j] = tempArray[j + 1];
tempArray[j + 1] = temp;
swapped = true;
}
}
if (swapped == false)
break;
}
return tempArray;
}
除了有助于缩短内循环(n - i - 1)之外,外循环中的“n - 1”还有什么意义?我尝试删除“n -1”并让 count++ 在内部循环中工作,结果是相同的,那么原因是什么?谢谢!
最佳答案
这是因为最大的元素已经在第一次迭代中排序了。
一图胜千言
图片来自https://en.wikipedia.org/wiki/Bubble_sort
另外,不需要最后一个元素,因为冒泡排序就是交换相邻元素,而最后一个元素没有相邻元素。
关于java - 为什么冒泡排序外循环在n-1处结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61131267/