[英]Why does Bubble Sort outer loop end at n-1?
我發現了這種冒泡排序(我研究過的第一種),我幾乎完全理解它,但我被困在一個地方。
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
另外,不需要最后一個元素,因為冒泡排序就是交換相鄰元素,而最后一個元素沒有相鄰元素。
這是因為冒泡排序適用於交換相鄰元素。 如果外循環一直到 n ,那么在內循環中你不能選擇另一個元素。
temp = tempArray[j];
tempArray[j] = tempArray[j + 1];
tempArray[j + 1] = temp;
這是因為數組的大小是直到 n 並且內部循環在 j 和 j+1 之間交換。 隨時提出進一步的疑問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.