Array sortiert ausgeben

JAVAsk

Mitglied
Ich habe mithilfe von netten Benutzern des java-Forums geschafft, ein Array mit selbst bestimmter Länge und selbst bestimmten Zahlen auszugeben. Jetzt möchte ich dieses Array sortiert ausgeben lassen. Welches Verfahren dafür angewendet wird, ist mir eigentlich egal (z.B. Bubblesort). Ich habe es selber versucht, aber komme leider nicht damit klar, wo ich die Zahlen am Besten sortieren soll und wann in das Array sortiert übernehme?
Java:
public class Array{

public static void main(String[] args){

//Liest die Zahl laenge ein und bestimmt dadurch die Länge des Arrays
System.out.println("Wie lang soll dein Array sein?:");
int laenge = Integer.parseInt(System.console().readLine());
int[] array = new int[laenge];

	//Liest Zahl ein und speichert an die aktuelle Stelle des Arrays
	for (int s=0; s<array.length; s++){
	int zahl = Integer.parseInt(System.console().readLine());
	array[s]=zahl;
	
	    //Ausgabe des aktuellen Arrays (sortiert)
		for (int i=0; i<laenge; i++) {
			for(int j=1; j<laenge; j++){
				if(array[i]>array[j]){
				int l=array[j];
				array[j]=array[i];
				array[i]=l;
				System.out.println("Die "+(i+1)+". Stelle im Array: "+array[i]);
				}
				else{
				System.out.println("Die "+(i+1)+". Stelle im Array: "+array[i]);
				}
			}
		}
	}
}
}

Ich bitte um Hilfe. Vielen Dank!🙂
 
Zuletzt bearbeitet von einem Moderator:
Musst du den Sortieralgorithmus selber implementieren? Falls nicht: Arrays.sort(deinArray); und fertig.

Falls doch, ist der Bubblesort das Einfachste.
 
Danke für deine Antwort.
Ich würde gerne den Sortieralgorithmus selber implementieren, damit ich das auch lernen kann.

Bitte um Hilfe!🙂
 
Dann wäre wohl der Bubblesort das Einfachste.

Es gibt hunderte Implementierungen im Internet. Irgendeine wird dir schon helfen.
Falls nicht, versuche es und melde dich noch einmal mit einer konkreten Fehlerbeschreibung. 😉
 
Eigentlich wollte ich einen Ansatz von einem Benutzer haben und damit weiter implementieren. Falls dann Fehler auftreten, kann ich danach fragen. Ich guck auch parallel dazu im Internet nach, jedoch helfen mir manchmal Beiträge im Forum viel mehr als eine Recherche. Ich hoffe, dass mir jemand helfen kann. Vielen Dank.
 
Wenn du so gar keinen Ansatz findest, ist der Algorithmus vielleicht noch ne Nummer zu hoch für dich. Wie Gucky schon sagte: Davon gibts ne Million Vorlagen im Netz. Wo ist der Unterschied, ob dir hier jemand nen Zweizeiler schreibt oder du ihn ergoogelst?
 
Ich habe jetzt etwas mehr geschafft. Meine Idee war, eine weitere static Methode zu implementieren, die das Bubblesort-Verfahren anwendet. In der main-Methode habe ich dann diese Sortiermethode benutzt. Es gibt aber noch ein kleines Problem: Wenn man z.B. immer größer (bzw. kleiner) werdende Zahlen in das Array einträgt --> Beispiel: 2, 5, 6, 10..., bzw. 10, 6, 5, 2... dann macht er genau das, was er machen soll. ABER: Wenn ich eine Zahl in das Array eintrage, die zwischen zwei vorhandenen Zahlen des Arrays liegt, so ersetzt er die eingegebene Zahl durch die größere der beiden vorhandenen Zahlen.--> Bsp: 1,4,7,9 steht im Array und ich trage jetzt 8 ein, dann ersetzt er 9 durch 8! Somit steht am Ende eine Zahl weniger als ich eingetragen habe.
Ich hoffe, ihr könnt den Fehler finden. Vielen Dank!
Hier ist der Code:
Java:
public class Array{

//Methode, die den Bubblesort-Algorithmus anwendet
public static int[] bubblesort(int[] unsortiert) {
		int temp;
		for(int i=1; i<unsortiert.length; i++) {
			for(int j=0; j<unsortiert.length-i; j++) {
				if(unsortiert[j]>unsortiert[j+1]) {
					temp=unsortiert[j];
					unsortiert[j]=unsortiert[j+1];
					unsortiert[j+1]=temp;
				}
				
			}
		}
		return unsortiert;
	}
	
	
public static void main(String[] args){

//Liest Zahl laenge ein und bestimmt dadurch die Länge des Arrays unsortiert
System.out.println("Wie lang soll dein Array sein?:");
int laenge = Integer.parseInt(System.console().readLine());
int[] unsortiert = new int[laenge];

	//Liest Zahl ein und speichert an die aktuelle Stelle des Arrays unsortiert
	for (int s=0; s<unsortiert.length; s++){
	int zahl = Integer.parseInt(System.console().readLine());
	unsortiert[s]=zahl;

         	//Bubblesort-Algorithmus wird auf das Array unsortiert angewendet und in das Array sortiert gespeichert
		int[] sortiert=bubblesort(unsortiert);
		
		//Ausgabe des Arrays sortiert
		for (int i=0; i<sortiert.length; i++) {
				System.out.println("Die "+(i+1)+". Stelle im Array: "+sortiert[i]);
		}
		}
	}
}
 
Zuletzt bearbeitet von einem Moderator:
So rum geht das aber nicht. 😉

Erst musst du etwas versuchen und dann kommen wir und helfen dir, wenn es nicht funktioniert.
 
Wenn ihr meine letzte Frage (s. oben) schon gelesen habt, möchte ich noch etwas ergänzen:
Den Fehler habe ich etwas falsch beschrieben: Nach der Hälfte des Arrays wird keine Zahl mehr hinzugefügt, sondern einfach an die passende Stelle ersetzt. Das heißt, es wird trotzdem jeweils eine Zahl gelöscht.
Beispiel zur Verdeutlichung des Fehlers:

Ein Array mit der Länge 10:
Ich trage nun die folgenden Zahlen ein: 5, 2, 9, 1, 3
Jetzt wird das jeweils eingefügt, und parallel dazu sortiert ausgegeben: 1,2,3,5,9
Bis dahin alles OK!
Das war die Hälfte (array.length/2).
Wenn ich ab jetzt weitere Zahlen eintrage (der Wert ist egal), dann fügt er es zwar an die richtige Postition aber löscht die allererste Zahl im Array. Das heißt, man kann nur halb so viele Zahlen eintragen als array.length (im Bsp: sortiert.length)

Bitte um Hilfe. VIELEN DANK! 🙂
 
Zuletzt bearbeitet:
Für alle, die sich meine Frage durchgelesen haben und/oder sich Gedanken darüber gemacht haben: Vielen Dank!
Aber: Ich konnte den Fehler selber beheben, indem ich einfach die for-Schleifen in der main-Methode nicht verschachtelt habe (vielleicht möchte das noch einer wissen🙂 ).
 
Zuletzt bearbeitet:

Zurück
Oben