2016-11-30 58 views
0

我想知道,如果我的SelectionSort的下面的實現是一個可能的實現。感謝你們! :)這是一個可能的實現選擇排序

public static int[] mySelectionSort (int [] array){ 

    int position = 0; 
    int tmp; 

    for (int j = array.length -1; j >= 0; j--){ 

     int max = array[0]; 

     for (int i = 0; i <= j; i++){ 

      if (array[i] >= max){ 

       max = array[i]; 
       position = i; 
      } 
     } 

     tmp = array[j]; 
     array[j] = max; 
     array[position] = tmp; 
    } 
    return array; 
} 

回答

0

是的,這是選擇種類的變化。

您可以使用for (int i = 0; i < j省略最後一次內部循環運行 - 沒有意義與其自己交換最後一項。

可以考慮循環不變:

  • 有兩個子陣列 - 在開始部分B和結尾E部分
  • E包含排序順序
  • 在電子商務的所有項目都不小是b
  • 的項目
  • 來自B的最大項與E連接
+0

感謝您的回答。我用一些例子檢查了算法,它運行良好。爲什麼職位必須改變?在我看來,它是正確的,因爲位置只保存最大元素的位置,當內部循環結束時,位置j上的元素與位置上的元素交換。 – KSV97

相關問題