2016-03-21 15 views
0
public static int[] sortArr(int[] a){ 
    int temp; 
    for(int i = 0; i < a.length; i++){ 
     temp = a[i]; 
     a[i] = a[findMin(a, i)]; 
     a[findMin(a, i)] = temp; 
    } 
    return a; 
} 
public static int findMin(int[] a, int start){ 
    int min = a[start]; 
    int minIndex= start; 
    for(int i = start; i < a.length; i++){ 
     if(a[i] < min){ 
      min = a[i]; 
      minIndex = i; 
     } 
    } 
    return minIndex; 
} 

sortArrメソッドは、与えられた配列を返すだけです。理由はわかりません。私は紙の上でそれを働いたし、それは動作するはずです。誰もが問題を見ることができますか?非常に単純なソートアルゴリズムが機能しない

+0

を? – rdonuk

+0

私はちょうどそれを編集しました、私は最小値の場所を見つけるためにminIndexを返します –

答えて

6

あなたはfindMinを2回呼び出していますが、最初のコールと同じ行にあるコードは、2回目のコールの結果が変化する原因となります。

は、あなたが持っている:

a[i] = a[findMin(a, i)]; // findMin() returns the min, and you'll move that to a[i] 
a[findMin(a, i)] = temp; // findMin() returns the new min == i 

を代わりに使用します。あなたが `findMin()`、 `min`または` minIndex`に返さない変数

int min = findMin(a, i); 
a[i] = a[min]; 
a[min] = temp; 
+1

これは正解です。 – rdonuk

+0

うん、助けてくれてありがとう –

関連する問題