2017-03-11 4 views
0

Verwenden der Sortierauswahl zum Sortieren eines Arrays. Ich denke, meine Logik stimmt, aber da ist dieser dumme Fehler.Auswahl Sortierung funktioniert nicht - Fehlende Logik

public static void arraySort(int[] a) { 
    //for loop to go through array 
    for(int i = 0; i < a.length; i++) { 
     int temp = a[i]; //set a temp value for first value 
     for (int x = i + 1; x < a.length; x++) { 
      if (a[x] < temp) { 
       a[i] = a[x]; 
       temp = a[x]; 
      } 
     } 
    } 
} 

Am Ende hält er den Druck nur eine Gruppe immer wieder von Werten.

Antwort

0

Sie sollten den minimalen Index in der äußeren Schleife und tauschen zwei Elemente nach jeder inneren Schleife Beendigung verfolgen, z.B .:

for (i = 0; i < size - 1; i++) { 
    minIndex = i; 
    for (j = i; j < size; j++) { 
    if (array[j] < array[minIndex]) { 
     minIndex = j; 
    } 
    } 
    swap(array, i, minIndex); 
} 

Ihr Fest Code:

public static void arraySort(int[] a) { 
    //for loop to go through array 
    for(int i = 0; i < a.length; i++) { 
     int temp = a[i]; //set a temp value for first value 
     int minIndex = i; 
     for (int x = i + 1; x < a.length; x++) { 
      if (a[x] < temp) { 
       a[i] = a[x]; 
       temp = a[x]; 
       minIndex = x; 
      } 
     } 
     //swap 
     a[minIndex] = a[i]; 
     a[i] = temp; 
    } 
}