2016-04-26 9 views
2

Kann mir jemand helfen, diese Swap-Methode herauszufinden, dass ein Teil eines größeren schnellen Sortierprogramm ist? Es soll ein Array und zwei ganze Zahlen nehmen und die durch die ganzen Zahlen angegebenen Indexpositionen vertauschen.Swap-Methode für quicksort in Java

private static <T extends Comparable<T>> int partition(T[] table, int first, int last) { 
    T pivot = table[first]; 
    int up = first; 
    int down = last; 

    do { 
     while ((up < last) && (pivot.compareTo(table[up]) >= 0)) { 
      up++; 
     } 
     while (pivot.compareTo(table[down]) < 0) { 
      down--; 
     } 
     if (up < down) { 
      swap(table, up, down); 
     } 
    } 

    while (up < down); 
    swap(table, first, down); 
    return down; 
} 

Die Swap-Methode ist derzeit undefined und ich bin mir nicht sicher, wie es funktioniert. Ich habe versucht, die Methode zu schreiben:

void swap(T[] array, int a, int b) { 
    T temp = array[a]; 
    array[a] = array[b]; 
    array[b] = temp; 
} 

Allerdings bekomme ich den Fehler, dass T nicht zu einem Typ auflösen kann. Aber wenn ich versuche, den Typ in int zu ändern, funktioniert die Methode nicht dort, wo sie oben genannt wird.

Antwort

3

Sie müssen den generischen Typ <T> zu Ihrem swap Methode hinzuzufügen. So etwas wie

+0

Ich habe versucht, das so gut und meine Anrufe der Swap-Methode immer noch sagen, dass „die Methode swap (T [], int, int) für den Typen QuickSort nicht definiert ist“ Ich habe das Verfahren auf dem gleichen Niveau wie private static definiert habe > int Partition (T [] Tabelle, int erste, int last) – Teej

+0

Nevermind es tatsächlich funktioniert, stellt sich heraus, ich hatte gerade eine Weile nicht kompiliert lol. Dank viel – Teej

-1

Wenn Sie Quicksort für alles außer einer Hausaufgabe implementieren, verschwenden Sie nicht Ihre Zeit. Verwenden Sie Collections.sort().

+0

es ist eine Hausaufgabe lol – Teej