Quicksort gibt kein Ergebnis aus

Xendarii

Mitglied
Hallo, liebe Java-Forengemeinde :)

Ich bin Medieninformatik-Student im zweiten Semester und habe mittlerweile dementsprechend bereits ein Semester Java gehabt. Jetzt ist das Modul Algorithmen dazugekommen, in dem wir als eine Art Hausaufgabe Quicksort programmieren sollen.

Mein Problem ist jetzt, dass ich zwar bereits den Code und auch eine JUnit-Klasse habe, die den Code eigentlich testen sollte, ich im Endeffekt aber keine Ausgabe bekomme. Der Compiler meckert nicht rum, der Code sollte so eigentlich stimmen (außer, ich hab etwas Signifikantes übersehen).

Meine Frage also: Warum kriege ich das sortierte Array nicht zurück? Ich hoffe, ihr könnt mir helfen =)


Hier der Code:

Java:
public class Quicksort {
	
	public static int[] quicksort(int[] array) {
		quickSort(array, 0, array.length - 1);
		return array;
	}
	
	public static void quickSort(int[] zahlen, int links, int rechts) {
		
		int i = links;
		int j = rechts;
		
		if (j > i) {
			
			int pivot = zahlen[zahlen.length / 2];
			
			while (i < j) {
				while (zahlen[i] < pivot && i <= j) {
					i++;
					
				} // zweite while-Schleife
				
				while (zahlen[j] > pivot && i <= j) {
					j--;
					
				} // dritte while-Schleife
				
				if (i < j) {
					austauschen(zahlen, zahlen[i], zahlen[j]);
				} // zweite if-Bedingung
				
			} // erste while-Schleife
			
			austauschen(zahlen, pivot, zahlen[i]);
			
			quickSort(zahlen, links, j - 1);
			quickSort(zahlen, j + 1, rechts);
			
		} // erste if-Bedingung
		
		else {
			return;
		}
		
	} // quicksort
	
	public static void austauschen(int[] array, int stellei, int stellej) {
		
		int temp = stellei;
		stellei = stellej;
		stellej = temp;
		
	} //austauschen
} // Quicksort
 
Zuletzt bearbeitet:

turtle

Top Contributor
Java:
public static void austauschen(int[] array, int stellei, int stellej) {
        
        int temp = stellei;
        stellei = stellej;
        stellej = temp;
        
    } //austauschen
Dieser Code funktioniert nicht:autsch:

Java unterstüzt "nur" Call-by-value", also können Funktions-Parameter nicht verändert werden, so dass diese ausserhalb der Funktion geänderte Werte haben.
Somit ist nach der Methode
Java:
int[] array = null;
int stellei = 5;
int stellej = 17;
austauschen(array, stellei, stellej);
stellei immer noch 5 und auch stellej immer noch 17.
Zudem greifst Du überhaupt nicht auf das Array zu?
 

Xendarii

Mitglied
Okay - leider haben uns unsere Professoren in der Tat noch nicht erklärt, was der Unterschied zwischen Call-by-Value und Call-by-Reference liegt. Ich hab den Inhalt der Methode austauschen jetzt einfach ausgelagert und dann dementsprechend zweimal in der Methode quickSort stehen - aber passieren tut trotzdem noch nichts. Hast du noch einen Lösungsvorschlag, wie das ganze funktionieren könnte?
 

XHelp

Top Contributor
Es sollte ja Werte an den entsprechenden Stellen des Arrays getauscht werden und nicht einfach irgendwelche Variablen.
 

Xendarii

Mitglied
Dementsprechend dann ja auch...

Java:
int temp = zahlen[i];
zahlen[i] = zahlen[j];
zahlen[j] = temp;

...oder nicht? Damit greife ich doch auf die int-Werte in den Arrays zu?
 

Xendarii

Mitglied
Nochmal der überarbeitete Code.

Ich krieg mittlerweile sogar 'ne Ausgabe, die sieht aber so aus: [I@43f854bd
Kann's ja irgendwie nicht sein...

Java:
public class Quicksort {
	
	public static void main(String[] args) {
		int[] array = {1,8,5,10,23,2,9};
		quickSort(array, 0, array.length - 1);
		System.out.println(array);
	}
	
	public static int[] quickSort(int[] zahlen, int links, int rechts) {
		
		int i = links;
		int j = rechts;
		
		if (j > i) {
			
			int pivot = zahlen[zahlen.length - 1];
			
			while (i < j) {
				while (zahlen[i] < pivot && i < j) {
					i++;
					
				} // zweite while-Schleife
				
				while (zahlen[j] > pivot && i < j) {
					j--;
					
				} // dritte while-Schleife
				
				if (i < j) {
					int temp = zahlen[i];
					zahlen[i] = zahlen[j];
					zahlen[j] = temp;
				} // zweite if-Bedingung
				
			} // erste while-Schleife
			
			int temp2 = pivot;
			pivot = zahlen[i];
			zahlen[i] = temp2;

			quickSort(zahlen, links, j - 1);
			quickSort(zahlen, j + 1, rechts);
			
		} // erste if-Bedingung
		
		return zahlen;
		
	} // quicksort
	
} // Quicksort
 

langhaar!

Bekanntes Mitglied
Du musst die Komponenten des Arrays ausgeben. Das machst du in einer Schleife.

Ich kann dir nur dringend raten, mal das eine oder Java Buch in die Hand zu nehmen.Die Frage ist sehr grundsätzlich.
'Das haben die Professoren mir nicht gesagt' hilft dir im Beruf nicht weiter und ein wenig Interesse und Eigeninitiative muss ohnehin vorhanden sein, sonst kannst du das Studium gleich aufgeben.
 
Zuletzt bearbeitet:

Xendarii

Mitglied
Ich lese gerade das Java-Buch meines Profs, danach kommt das nächste dran, ich zeige da also durchaus Eigeninitiative. Worum es mir geht, ist, dass ich Quicksort bis Dienstag programmiert und kommentiert haben muss und momentan einfach keinen Ansatz habe, wie ich das Programm zum Laufen bringen soll. Dementsprechend wär ich über eine konkrete Hilfestellung sehr glücklich.
 

Xendarii

Mitglied
Das war ein Hinweis, aber ich kann den gerade in meinem Kopf nicht konkret umsetzen (;

An welcher Stelle soll ich die Komponenten des Arrays mit einer Schleife ausgeben?
 

Xendarii

Mitglied
Aye, das ergibt Sinn! Wunderbar, danke! Jetzt krieg ich wenigstens schon einmal ein vernünftiges Ergebnis, das nur leider falsch ist. Das heißt, im Code stimmt auch noch irgendwas nicht...
 

XHelp

Top Contributor
Dann schmeiß etweder den Debugger an oder packe in jede Zeile eine Ausgabe, so dass du nachvollziehen kannst was da schief läuft.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Java Quicksort PAP Java Basics - Anfänger-Themen 2
B Quicksort in Verbindung mit einem Projekt Java Basics - Anfänger-Themen 1
M QuickSort und Liste Java Basics - Anfänger-Themen 6
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
G Quicksort Algorithmus Java Basics - Anfänger-Themen 12
Hanschyo Quicksort sortiert von groß nach klein Java Basics - Anfänger-Themen 3
R Quicksort mit Interface Comparable Java Basics - Anfänger-Themen 6
L Quicksort verstehen Java Basics - Anfänger-Themen 3
M Quicksort Laufzeit langsam Java Basics - Anfänger-Themen 5
M Quicksort Laufzeit langsam Java Basics - Anfänger-Themen 0
J Quicksort mit Stack Java Basics - Anfänger-Themen 4
Liondary Quicksort Java Basics - Anfänger-Themen 20
K Quicksort Fehler in der Implementierung Java Basics - Anfänger-Themen 2
S Quicksort Algorithmus Java Basics - Anfänger-Themen 2
D Java Quicksort Java Basics - Anfänger-Themen 5
A Frage zu QuickSort Java Basics - Anfänger-Themen 9
B Quicksort mit Durchschnitt als Pivot Java Basics - Anfänger-Themen 1
K Quicksort Java Basics - Anfänger-Themen 3
M Quicksort - Probleme Java Basics - Anfänger-Themen 5
T QuickSort implementieren Java Basics - Anfänger-Themen 5
R QuickSort Verständis Problem (?) Java Basics - Anfänger-Themen 2
M Quicksort implementierung Java Basics - Anfänger-Themen 23
E Quicksort Java Basics - Anfänger-Themen 8
E QuickSort: Ergebniss speichern Java Basics - Anfänger-Themen 2
P quickSort eines Objekt-Arrays geht nicht! Java Basics - Anfänger-Themen 11
F Stackoverflow bei Quicksort Java Basics - Anfänger-Themen 2
F Quicksort Java Basics - Anfänger-Themen 22
C Quicksort Invariante Java Basics - Anfänger-Themen 2
C QuickSort - Pivot in der Mitte Java Basics - Anfänger-Themen 5
P QuickSort iterativ Java Basics - Anfänger-Themen 5
K Eine Frage zum Quicksort Java Basics - Anfänger-Themen 11
B Quicksort --> Methodenaufruf Java Basics - Anfänger-Themen 10
B QuickSort - Fehler nicht zu finden Java Basics - Anfänger-Themen 2
W Quicksort Problem Java Basics - Anfänger-Themen 3
A Quicksort, #Vergleiche zählen klappt nicht Java Basics - Anfänger-Themen 3
J Quicksort Implementierung-- Exception ArrayOutOfBounds Java Basics - Anfänger-Themen 6
M Fehler in meinem Quicksort! Java Basics - Anfänger-Themen 21
B Quicksort Struktogramm Java Basics - Anfänger-Themen 9
G Frage zu Quicksort Java Basics - Anfänger-Themen 18
0 Quicksort bsp Java Basics - Anfänger-Themen 5
B Quicksort Problem Java Basics - Anfänger-Themen 6
S Mein Quicksort Problem: he method quickSort(int[], int, int) Java Basics - Anfänger-Themen 2
M Quicksort Java Basics - Anfänger-Themen 2
C Quicksort raten Java Basics - Anfänger-Themen 2
K ArrayList sortieren mit Quicksort Java Basics - Anfänger-Themen 3
M Quicksort Java Basics - Anfänger-Themen 4
J Quicksort programmieren Probleme Java Basics - Anfänger-Themen 9
S Quicksort Programm Java Basics - Anfänger-Themen 7
D Quicksort Java Basics - Anfänger-Themen 3
K Parameterübergabe bei quickSort Java Basics - Anfänger-Themen 6
S QuickSort will mir nicht in den Kopf (an einer Stelle) Java Basics - Anfänger-Themen 14
0 Quicksort Java Basics - Anfänger-Themen 2
M QuickSort Java Basics - Anfänger-Themen 4
J QuickSort - kurze Frage Java Basics - Anfänger-Themen 9
H Quicksort und Rekursiv: Türme von Hanoi Java Basics - Anfänger-Themen 9
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
P Gibt es einen anderen Weg um "{}" in IntelliJ zu schreiben? Java Basics - Anfänger-Themen 5
Shadowrunner Variablen Gibt es eine Möglichkeit die Ziffern/Stellen einer Zahl fest zu legen? Java Basics - Anfänger-Themen 3
T HashMap Lsite gibt die sachen nicht aus wie gewollt. Java Basics - Anfänger-Themen 3
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
N Gibt es hierfür einen Shortcut Java Basics - Anfänger-Themen 5
U Warum gibt das eine Nullpointerexception? (Switch) Java Basics - Anfänger-Themen 6
K Warum gibt mir z. B. 40^128 eine Zahl? Ich dachte mit xor kann man nur booleanwerte erhalten, also prüfen ob etwas whar oder falsch ist? Java Basics - Anfänger-Themen 1
J Interpreter-Fehler Programm gibt nicht gewünschtes Ergebnis aus Java Basics - Anfänger-Themen 11
G Input/Output getText() gibt keinen Wert! Java Basics - Anfänger-Themen 13
Arita welche Fehler gibt es noch? wie kann ich es noch vervollständigen Java Basics - Anfänger-Themen 15
P Methode die ausgibt wie viele Primzahlen es zwischen 2 und n gibt Java Basics - Anfänger-Themen 10
P Welche Zeile in Tadople gibt einen compiler error? Java Basics - Anfänger-Themen 5
S Gibt es ein simples JWebbrowser Element? Java Basics - Anfänger-Themen 6
S Gibt es irgendeine Möglichkeit, dies zu tun?(Android Studio) Java Basics - Anfänger-Themen 1
S Gibt es sowas (JSpinner)? Java Basics - Anfänger-Themen 9
F If Abfrage gibt falsches Ergebnis.... Java Basics - Anfänger-Themen 6
J Erste Schritte Gibt es setMantisse? Java Basics - Anfänger-Themen 7
J Vektoren Add gibt nicht das aus was es sollte Java Basics - Anfänger-Themen 3
S Gibt es einen guten kostenlosen Online-kurs Java Basics - Anfänger-Themen 2
D Warum gibt mir das Programm nicht den Array invertiert an ? Java Basics - Anfänger-Themen 1
B Prüfen, ob es schon einen Termin gibt in einem Zeitraum Java Basics - Anfänger-Themen 5
A Kfz - Händler Klasse. JUnit-Test gibt noch Fehler an, aber finde Ursache nicht Java Basics - Anfänger-Themen 7
S Gibt es für die Klasse HashMap Generic Implementierungen? Java Basics - Anfänger-Themen 11
S Gibt es eine Funktion, die gewissermaßen eine Reihe von instanceOf() vereinheitlicht? Java Basics - Anfänger-Themen 19
N Ausführung gibt keinen Fehler an, Return wird aber nicht ausgegeben Java Basics - Anfänger-Themen 22
L Methoden Rekursion gibt alten Wert wieder Java Basics - Anfänger-Themen 37
Aprendiendo Gibt es in der JAVA-API eine Funktion, die eine Dezimalzahl in eine binäre Zahl umwandelt? Java Basics - Anfänger-Themen 8
E Gibt es in Java Properties (wie in C#) Java Basics - Anfänger-Themen 6
R Gibt es Eine einfache Programierung dieser Methoden Java Basics - Anfänger-Themen 8
B BufferedReader gibt Datei-Inhalt doppelt aus Java Basics - Anfänger-Themen 3
B Wieso gibt er hier nur die ungeraden Zahlen aus? Java Basics - Anfänger-Themen 5
B Wieso gibt das Programm in der Console kein Ergebnis aus? Java Basics - Anfänger-Themen 2
D Funktion gibt Dimension zurück Java Basics - Anfänger-Themen 11
JavaNewbie2.0 Gibt meiner Meinung etwas falsches aus. Java Basics - Anfänger-Themen 7
S Ausgabe gibt nur Arrayadresse aus... Java Basics - Anfänger-Themen 4
F Scanner - nextLine() gibt leeren String zurück Java Basics - Anfänger-Themen 2
Tommy Nightmare void Methode gibt Array zurück Java Basics - Anfänger-Themen 3
N Kalender - Tag addieren gibt 31. Juni zurück Java Basics - Anfänger-Themen 3
G Gibt es eine Methode die bei einem StringBuilder n mal das Zeichen c hinzufügt? Java Basics - Anfänger-Themen 6
G Taschenrechner gibt nur 0.0 aus Java Basics - Anfänger-Themen 8
OlafHD Gibt es einen Laufbalken? Java Basics - Anfänger-Themen 2
P Listen sortieren mit Binärbaum gibt keine Ausgabe ab 10000 Integern Java Basics - Anfänger-Themen 14
G Input/Output InputStream gibt nicht die Korrekten Werte aus Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben