簡體   English   中英

為什么冒泡排序外循環在 n-1 處結束?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM