2013-05-07 191 views
2

我正在努力學習一個測試和其中一個研究問題,我無法與BubbleSort達成交易。問題是:修改BubbleSort代碼

修改下面的BubbleSort代碼來短路它的執行。我的意思是,修改它,以便如果通過完成而不進行任何交換,執行將停止。

public static<T extends Comparable<T>> void bubbleSort(T[] data) 
{ 
    int position, scan; 
    T temp; 

    for (position = data.length - 1; position >= 0; position--) 
    { 
    for (scan = 0; scan <= position - 1; scan++) 
    { 
     if (data[scan].compareTo(data[scan+1]) > 0) 
     { 
     /**Swap the values*/ 
     temp = data[scan]; 
     data[scan] = data[scan+1]; 
     data[scan + 1] = temp; 
     } 
    } 
    } 
}  

回答

2

您將需要一個布爾標誌或狀態。

快速谷歌搜索會救你的麻煩:http://rosettacode.org/wiki/Sorting_algorithms/Bubble_sort

repeat 
    hasChanged := false 
    decrement itemCount 
    repeat with index from 1 to itemCount 
     if (item at index) > (item at (index + 1)) 
      swap (item at index) with (item at (index + 1)) 
      hasChanged := true 
until hasChanged = false 
+0

我想我錯過了聯繫,但謝謝!對此,我真的非常感激 – Megan 2013-05-07 00:23:06