2016-11-30 7 views
0

の実装が可能ですか?君たちありがとう! :)これは、SelectionSortの実装が可能な実装であれば、Selection Sort

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を使用して最後の内部サイクル実行を省略することができます。最後のアイテムを交換する意味はありません。

一つは、サイクル不変量を考慮することができます。

  • 2個のサブアレイがある - パートBを開始と終了部E
  • は、Eは、ソート順序
  • にE内のすべての項目が含まれていますがB
  • の項目が小さいほどではありません
  • Bからの最大のアイテムは、E
+0

とお答えいただきありがとうございます。私はいくつかの例でalgoをチェックし、うまくいきました。なぜポジションを変えなければならないのか?私の意見では、positionはmax要素の位置だけを保存するため、内部ループが終わると、位置jの要素は位置positionの要素と入れ替わります。 – KSV97

関連する問題