Methoden Algorithmus MergeSort String [ ] array sortieren programmieren

U

undercover

Aktives Mitglied
Moin Leute,
habe mal eine Frage. Ich versuche den MergeSort Algorithmus für die Sortierung eines String [] array zu schreiben.
Als Parameter für den Aufruf nehme ich ein String [] array welches ein Index von 30 besitzt und setzt left auf 0 und right auf array.length-1.
Das übergebene Array hat an jeder Stelle genau ein Wort z.b. array [0] = "."; array [1] = "Hans";
Das Problem ist, dass die Sortierung vorne und hinten nicht hinhaut.
Folgendes habe ich :

Java:
public class Sortierung {
  
    static void msort(String [] array, int left, int right){
        int i;
        int j;
        int k;
        String [] b = new String[array.length];
        if(right > left){
            int middle = (right + left)/2;
            msort(array , left, middle);
            msort(array, middle+1, right);
            for(k = left;k <= middle; k++){
                b[k] = array[k];
            }
            for(k = middle; k < right; k++){
                b[right + middle - k] = array[k+1];
            }
            i = left;
            j = right;
            for(k = left; k <= right; k++){
                if(i <= middle )
                    if(b[i].equals(b[j])){
                    array[k] = b[i++];
                }else{
                    array[k] = b[j--];
                }
            }
    }
   }
}

Die wenn ich das Array printe ,ist es voller null Werte und vereinzelt Strings.
Habt ihr eine Ahnung wieso das nicht hinhaut?
Gruß
 
U

undercover

Aktives Mitglied
Schon versucht, habe ich z.B.
Java:
if(i <= middle && (b[i].compareTo(b[j]))<= 0)
ein,
bekomme ich diese Ausgabe :
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    180,9 KB · Aufrufe: 20
M

Meniskusschaden

Top Contributor
Wenn ich deinen Algorithmus gemäß deinem Post #3 ändere und so aufrufe:
Java:
    public static void main(String[] args) {
        String[] strings = { "q", "a", "e", "z", "i", "d", "y", "w" };
        System.out.println(Arrays.toString(strings));
        msort(strings, 0, strings.length - 1);
        System.out.println(Arrays.toString(strings));
    }
erhalte ich folgende Ausgabe:
Code:
[q, a, e, z, i, d, y, w]
[a, d, e, i, q, w, y, z]
 
U

undercover

Aktives Mitglied
Das ist interessant, also anscheinend funktioniert es ja. Ich übergebe der Methode msort ein String [] array, in dem folgendes gespeichert ist :
Hans
ist
gerne
Erdbeeren
und
die
am
liebsten
mit
Sahne
.
Hans
hat
dafür
extra
welche
in
seinem
Garten
gepflanzt
.
Er
freut
sich
deshalb
schon
auf
den
Sommer
.
Genau so ist es in einer txt Datei auf dem Rechner gespeichert. Das ganze lese ich per Buffered Reader ein und Speicher es in einem String [] und übergebe es der msort, wobei jede Zeile genaue einem Index zugewiesen wird.

Eine Idee woran es liegen kann?
 
U

undercover

Aktives Mitglied
Das Array welches übergeben wird ist korrekt. Jeder Index hat ein String. Habe ebend alles durch den debugger gejagt.
Glaube habe einfach das falsche ausgeprintet :
System.out.println(Arrays.toString(array));
Kannst du mir sagen wie du das ausgeprintet hast ? Steh gerade auf dem Schlauch.
 
U

undercover

Aktives Mitglied
Top. Bekomme nun folgende Ausgabe:
[., ., ., ., Er, Erdbeeren, Garten, Hans, Hans, Sahne, Sommer, am, auf, daf�r, den, deshalb, die, extra, freut, gepflanzt, gerne, hat, in, ist, liebsten, mit, schon, seinem, sich, und, welche]
Gibt es die Möglichkeit das er Groß-und Kleinschreibung missachtet und "richtig" sortiert?
 
U

undercover

Aktives Mitglied
Vielen Dank hat super geklappt :).
Tolles Forum, hat mich gewundert so schnell , so kompetente Antworten zu bekommen !
 
U

undercover

Aktives Mitglied
@Minuskusschaden ,
Wie schaut das ganze aus wenn ich der Methode ein [][] Array übergebe?
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Welcher Methode - dem sortieren oder toString?
Falls letzteres, nutz Arrays.deepToString
 
U

undercover

Aktives Mitglied
Ich möchte nun ein Array übergeben was exemplarisch wie folgt ausschaut:
i j
[.][Hans]
[Hans][isst]
[isst][gerne]
[gerne][Erdbeeren]
Dieses Array soll meiner Methode msort als Parameter übergeben werden. Das zweidimensionale Array soll dann nach i sortiert werden so das am Ende folgendes rauskommt.
[.][Hans]
[gerne][Erdbeere]
[Hans][isst]
[isst][gerne]
Als im Prinzip soll er nur stelle i zum sortieren beachten.
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Dafür wirst du die Methode entsprechend umschreiben müssen, entweder speziell für diesen Fall, oder allgemein gehalten.

An deiner Stelle würde ichs erstmal für diesen Fall machen, überleg doch mal, was du dafür anpassen müsstest
 
U

undercover

Aktives Mitglied
Ich brauch es nur für diesen Fall, die Methode wird danach nicht mehr benötigt.
Ich hätte jetzt einfach im Methoden Aufruf das [][] übergeben und bei der Erzeugung des String [] b ein String [][] b = new String.array[array.length][2] gemacht. Dann meckert er allerdings bei der compareTo Methode.
Code:
static void msort(String[][] array, int left, int right) {
        int i;
        int j;
        int k;
        String[][] b = new String[array.length][2];
        if (right > left) {
            int middle = (right + left) / 2;
            msort(array, left, middle);
            msort(array, middle + 1, right);
            for (k = left; k <= middle; k++) {
                b[k] = array[k];
            }
            for (k = middle; k < right; k++) {
                b[right + middle - k] = array[k + 1];
            }
            i = left;
            j = right;
            for (k = left; k <= right; k++) {
                if (i <= middle && (b[i].compareToIgnoreCase(b[j])) <= 0) {
                    array[k] = b[i++];
                } else {
                    array[k] = b[j--];
                }
            }

        }

    }
 
M

Meniskusschaden

Top Contributor
Arrays haben keine compareTo Methode. Jede Element des Arrays b ist ja wiederum ein Array, das zwei Strings umfasst. Da du offenbar nur den String in der linken Array-Spalte als Sortierkriterium nutzen willst, müsste folgendes gehen:
Java:
b[i][0].compareToIgnoreCase(b[j][0])
 
U

undercover

Aktives Mitglied
Danke, hatte da anstelle der 0 eine 1 stehen, was nicht geklappt hat.
Jetzt sieht meine Ausgabe folgendermaßen aus:
. Hans
. Hans
. Er
am liebsten
auf den
daf�r extra
den Sommer
deshalb schon
die am
Er freut
Erdbeeren und
extra welche
freut sich
Garten gepflanzt
gepflanzt .
gerne Erdbeeren
Hans ist
Hans hat
hat daf�r
in seinem
ist gerne
liebsten mit
mit Sahne
Sahne .
schon auf
seinem Garten
sich deshalb
Sommer .
und die
welche in

:)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Quicksort-Algorithmus - zufälliges Pivot wählen Allgemeine Java-Themen 6
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30
B Algorithmus Warteschlange Ringpuffer wirklich fehlerfrei Allgemeine Java-Themen 8
M Probleme mit Negamax-Algorithmus Allgemeine Java-Themen 29
F Q - Learning Algorithmus Bug Allgemeine Java-Themen 4
M Salesman Problem - Bruteforce Algorithmus Allgemeine Java-Themen 23
M Minmax Algorithmus Verständnisproblem Allgemeine Java-Themen 2
H Rundreise frage (Algorithmus) Allgemeine Java-Themen 18
F KMP-Algorithmus Allgemeine Java-Themen 9
S Algorithmus welcher True-Werte in einem Array findet und auswertet. Allgemeine Java-Themen 5
P MinMax Algorithmus Allgemeine Java-Themen 0
J Abhängigkeit zwischen Rechenzeit und Speicherbedarf in einen Algorithmus Allgemeine Java-Themen 7
K Djikstra-Algorithmus Allgemeine Java-Themen 1
T Minimax/Alphabeta Algorithmus hängt sich auf (?) Allgemeine Java-Themen 2
M Algorithmus zum Zahlen einteilen Allgemeine Java-Themen 8
O Best Practice Hilfe bei Algorithmus gesucht Allgemeine Java-Themen 10
S Algorithmus um Objekte auf einer Flaeche mit gleichem Abstand anzuordnen..? Allgemeine Java-Themen 20
S Rucksackproblem und genetischer Algorithmus Allgemeine Java-Themen 9
L Abbruch des Algorithmus Allgemeine Java-Themen 8
D Input/Output Ausgleichen chemischer Reaktionsgleichungen mit dem Gauß-Algorithmus Allgemeine Java-Themen 2
Messoras A*-Algorithmus integrieren Allgemeine Java-Themen 3
S Buchscan 3D Dewarp Algorithmus - Ansätze Allgemeine Java-Themen 1
B Verteilungs-/Vergabe-Algorithmus mit abhängigen Score-Werten Allgemeine Java-Themen 3
Androbin "Shunting Yard"-Algorithmus Allgemeine Java-Themen 6
B Algorithmus - Project Euler Problem 18 Allgemeine Java-Themen 2
N Algorithmus zum bewerten von mathematischen Funktionen Allgemeine Java-Themen 11
O Algorithmus Optimierung Allgemeine Java-Themen 3
Joew0815 Algorithmus - Zahlenfolge in 4 ähnliche Teile aufteilen Allgemeine Java-Themen 0
O Tag Cloud Algorithmus Idee gesucht Allgemeine Java-Themen 2
A Implementierung eines Algorithmus (Farthest Insertion zur Lösung des TSP) in O(n²) Allgemeine Java-Themen 2
C Eclipse Probleme bei selbst erstelltem Algorithmus Allgemeine Java-Themen 2
H Graph-Algorithmus gesucht Allgemeine Java-Themen 21
N Algorithmus durch Workflow Allgemeine Java-Themen 7
M tree-based diff Algorithmus (Code-Vergleiche) Allgemeine Java-Themen 3
S Uhrzeit Algorithmus sale Allgemeine Java-Themen 11
N A*-Algorithmus Allgemeine Java-Themen 5
A Suche Algorithmus zum Erstellen eines planaren Graphen Allgemeine Java-Themen 5
F Methoden Algorithmus zur Gegnerfindung (Turnier) Allgemeine Java-Themen 9
T Algorithmus Graph Allgemeine Java-Themen 10
J Algorithmus gesucht (Stringtransformation) Allgemeine Java-Themen 4
B Algorithmus Krankenhausbelegung Allgemeine Java-Themen 17
S Algorithmus von Dijkstra Allgemeine Java-Themen 2
alex_fairytail OOP Banknoten Algorithmus Teil 2 Allgemeine Java-Themen 13
2 ArrayList aktualisieren Algorithmus Allgemeine Java-Themen 11
alex_fairytail Methoden Banknoten Algorithmus Allgemeine Java-Themen 10
R Codehinweise: Algorithmus Größenvergleich von n Zahlen Allgemeine Java-Themen 5
SuperSeppel13 WTF?! Algorithmus-Geschwindigkeitstest Allgemeine Java-Themen 2
L Algorithmus für kürzesten Weg mit Wegpunkten Allgemeine Java-Themen 21
C Algorithmus Problem in Minesweeper Allgemeine Java-Themen 5
S Algorithmus um Labyrinth zu erzeugen Allgemeine Java-Themen 6
V Problem mit A* Pathfinder-Algorithmus Allgemeine Java-Themen 2
S Algorithmus um nächst folgende Primzahl zu berechnen Allgemeine Java-Themen 7
S Algorithmus Problem. Rechtecke effizient auf Spielfeld anordnen. Allgemeine Java-Themen 7
C Algorithmus-Hilfe Allgemeine Java-Themen 20
J Algorithmus Längenkombinationen? Allgemeine Java-Themen 7
M Kombinationen über rekursiven Algorithmus berechnen? Allgemeine Java-Themen 10
L Algorithmus für Poker-Hände Allgemeine Java-Themen 7
chik 2 return werte für Greedy-Algorithmus (gelöst) Allgemeine Java-Themen 3
D Abstruse Probleme mit eigenem replace Algorithmus Allgemeine Java-Themen 11
P RC4 Algorithmus Allgemeine Java-Themen 3
D RSA Verfahren - Erweiterter Euklidischer Algorithmus Allgemeine Java-Themen 4
C IBAN und Bic Validieren (Algorithmus) Allgemeine Java-Themen 10
P Problem mit A*-Algorithmus Allgemeine Java-Themen 12
M Wörter Algorithmus Allgemeine Java-Themen 7
M Algorithmus für automatische Zeilenumbrüche Allgemeine Java-Themen 12
K Postleitzahlen Algorithmus Allgemeine Java-Themen 12
G Problem mit Algorithmus Allgemeine Java-Themen 3
T Hilfe bei einem Algorithmus Allgemeine Java-Themen 2
S Stemming-Algorithmus gesucht (z.B. Porter) Allgemeine Java-Themen 2
RoliMG präfix zu infix algorithmus Allgemeine Java-Themen 6
Z A*-Algorithmus - Probleme mit offener/geschlossener Liste Allgemeine Java-Themen 7
S Javaimplementierung des MD5 Algorithmus Allgemeine Java-Themen 2
E Container-Pack-Algorithmus Allgemeine Java-Themen 4
G k nearest neighbor algorithmus Allgemeine Java-Themen 7
C HASH Algorithmus 2 Strings ergeben das Selbe. Allgemeine Java-Themen 2
P Page Rank Algorithmus implementieren Allgemeine Java-Themen 7
T Problem RSA-Algorithmus in Java? Allgemeine Java-Themen 2
minzel Hash-Algorithmus Allgemeine Java-Themen 9
Y komprimierung mittels Huffman-Algorithmus, bit-shifting. Allgemeine Java-Themen 2
K Algorithmus Allgemeine Java-Themen 10
C Algorithmus für Array Allgemeine Java-Themen 9
I Verschlüsselung mit Pwd. - User soll Algorithmus wählen Allgemeine Java-Themen 4
J fällt euch ein Algorithmus ein? Allgemeine Java-Themen 4
S Algorithmus für Sudoku Allgemeine Java-Themen 17
N Euklidischer Algorithmus in Java und keine Terminierung. Allgemeine Java-Themen 7
F Algorithmus für Sortierung gesucht Allgemeine Java-Themen 15
T Algorithmus verbessern Allgemeine Java-Themen 10
U Suche Algorithmus zur bestimmung des längsten Wegs Allgemeine Java-Themen 3
U Ford-Fulkerson Algorithmus gesucht Allgemeine Java-Themen 1
U Dijkstra Algorithmus gesucht Allgemeine Java-Themen 4
D Algorithmus für die Erkennung fehlerhafter Eingaben Allgemeine Java-Themen 4
I hash-algorithmus Allgemeine Java-Themen 9
Kirby_Sike K-Way MergeSort Allgemeine Java-Themen 33
L MergeSort allgemein Allgemeine Java-Themen 61
J Rekursion Mergesort Allgemeine Java-Themen 10
X MergeSort Laufzeit Problem Allgemeine Java-Themen 4
T Threads Mergesort mit limitierter Threadanzahl Allgemeine Java-Themen 2
S MergeSort iterativ und rekursiv? Allgemeine Java-Themen 8
B Generische Datentypen MergeSort Allgemeine Java-Themen 5
B Hilfe beim Verständnis von Mergesort Allgemeine Java-Themen 5

Ähnliche Java Themen

Anzeige

Neue Themen


Oben