2016-09-11 3 views
-2

このメソッドでは、1つの要素だけがソートされます。残りの要素はソートされません。私の選択に間違っていることを教えてください。ソートコード

実際の問題は、あなたの間違いは、あなたの内側のループがi+1からではなく1から始めるべきであるということです

private static int[] selectSort(int[] arr) { 

    int n = arr.length; 
    for (int i = 0; i < n - 1; i++) { 
     int min_Ele = i; 
     for (int j = 1; j < n; j++) { 
      if (arr[j] <= arr[min_Ele]) { 
       min_Ele = j; 
      } 
     } 
     if (i != min_Ele) { 
      int tmp = arr[i]; 
      arr[i] = arr[i = min_Ele]; 
      arr[min_Ele] = tmp; 
     } 
    } 
    return arr; 
} 
+1

ヒント:たとえば、あなたの命名が間違っています。いけない何かを "arr"と呼んでください。例えば、 "sort to numbers"と呼んでください。そして、それをmin_eleと呼んではいけません( "_"を使ってダブル悪い!)...例えば "indexOfSmallestNumber"と呼んでください。ヒント:あなたはこのような困惑をprintステートメントを使って解決します。デバッガで小さなサンプルを実行することによって実行できます。あなたは私たちにそれをする必要はありません! – GhostCat

+0

私はプログラミングに新鮮です。私はいくつかの助けが必要です – naveen

答えて

-3
private static int[] selectSort(int[] arr) { 

    int n = arr.length; 
    for (int i = 0; i < n-1; i++) { 
     int min_Ele = i; 
     for (int j = i+1; j < n; j++) { 
      if (arr[j] <= arr[min_Ele]) { 
       min_Ele = j; 
      } 
     } 
     if (i != min_Ele) { 
      int tmp = arr[i]; 
      arr[i] = arr[min_Ele]; 
      arr[min_Ele] = tmp; 
     } 
    } 
    return arr; 
} 
+5

それは良い答えを書く方法ではありません。コードを削除してはならず、元のソースコードの問題点を説明してください。あなたはそれをどのように修正したかを伝えます。申し訳ありませんが、ご質問は元の質問と同じ低品質です!あなたは同じ "誤ったフォーマット"を持っています! – GhostCat

1

ここで見つけるために私を助けてください。

public static int[] selectSort(int[] arr) { 

    int n = arr.length; 
    for (int i = 0; i < n - 1; i++) { 
     int min_Ele = i; 
     for (int j = i+1; j < n; j++) { 
      if (arr[j] <= arr[min_Ele]) { 
       min_Ele = j; 
      } 
     } 
     if (i != min_Ele){ 
      //swap 
      int tmp = arr[i]; 
      arr[i] = arr[i = min_Ele]; 
      arr[min_Ele] = tmp; 
     } 
    return arr; 
} 
関連する問題