Erste Schritte Array sortieren

anfaenger

Mitglied
Guten Abend

Ich habe 2 Methoden:
1. void swap(int[] a, int i, int j) Hier soll das Element an der Stelle i mit dem Element an der Stelle j des Arrays a vertauscht werden.
2. void sortiere() Hier soll der eigentliche Sortiervorgang durchgeführt werden.

Mein erstes Problem ist, dass ich mir unter der Angabe nicht wirklich was vorstellen kann.

Java:
private static void sortiere() {
		
		System.out.println("Wie viele Zahlen werden Sie eingeben?");
		int n = in.nextInt();
		int a[] = new int [n];
		System.out.println("Bitte geben Sie jetzt die Zahlen ein:");
		for(int i = 0; i < a.length; i++){
			a[i] = in.nextInt();
		}
	 
		int x;
		 
		boolean var = false;
		do{
		for(int i = 1; i < a.length-1; i++){
			if(a[i-1]>a[i]){
				x = a[i];
				a[i]=a[i-1];
				a[i-1]=x;
				
				System.out.println("Swap " + a[i] + " " + a[i-1] + " " + "\n" + Arrays.toString(a));
				
				var=true;
			}
		}
		}while(var == false);
	}


	private static void swap(int[] a, int i, int j) {

}

Sortieralgorithmus wurde vorgegeben.

Ergebnis sollte so aussehen:
3 2 1
swap 3 2
2 3 1
swap 3 1
2 1 3
swap 2 1
1 2 3

Was gehört in die Methode swap hinein? Welche Elemente vertauscht werden sollen? Wenn ja, wie?
Bitte um Hilfestellungen.

mfg
 

Camill

Bekanntes Mitglied
Zu 1:
-> Element mit Index i aus Array a zwischenspeichern
-> Element mit Index j in Array a an Stelle i schreiben
-> Zwischengespeicherten Wert in Array a an Stelle j schreiben

Zu 2:
Sollen nur 4 Werte eingelesen werden? Stammt der bestehende Code von dir?
 
Zuletzt bearbeitet:

anfaenger

Mitglied
private static void swap(int[] a, int i, int j) {
int y;
y = a;
a = a[j];
a[j] = y;
}

Gut, jetzt habe ich die Stellen vertauscht und jetzt? Bei der Methode sortiere werden ja keine Parameter übernommen(?)


Nein es sollen beliebig viele Werte eingelesen werden.
Restliche Code stammt von mir, Sortieralgorithmus wurde in Form eines Nassi-Schneidermann-Diagramm vorgegeben.
 

Evil-Devil

Top Contributor
Einfaches aufwärts sortieren

Schleife 1:
Von der ersten Zahl bis zur letzten Zahl, die eingegeben wurde
Schleife 2:
Starte mit der Zahl die nach der Zahl aus Schleife 1 kommt und gehe bis zum Ende

ist die Zahl aus Schleife 1 kleiner der Zahl aus Schleife 2?
Nein, ist sie nicht
Ok, dann tausche diese beiden.

Fahre mit Schleife 2 fort
Am Ende von Schleife 2 wird Schleife 1 fortgesetzt



Wenn ich mich jetzt mit ausgeschaltetem Kopf nicht ganz vertan habe sollte das inhaltlich richtig sein....
 

anfaenger

Mitglied
Zuerst hat man ein Auwahlmenü 1-3. Das Sortieren ist die Nr. 3 und hier habe ich zwei Methoden gegeben:

1. void swap(int[] a, int i, int j) Hier soll das Element an der Stelle i mit dem Element an der Stelle j des Arrays a vertauscht werden.
2. void sortiere() Hier soll der eigentliche Sortiervorgang durchgeführt werden.

Zuerst wird abgefragt wieviel Zahlen ich eingeben möchte, anschließend werden die Zahlen eingegeben und dann sortiert.

Sortieren funktioniert, ich weiß nur nicht, was ich mit der Methode swap machen soll? Sortierung erfolgt in der Methode "sortiere".
 

Camill

Bekanntes Mitglied
Das erklärt einiges, es war wahrscheinlich so gedacht das die Methode
Code:
swap(int[] a, int i, int j)
innerhalb der
Code:
sortieren()
Methode aufgerufen werden soll um einzelne Elemente zu vertauschen.
 

Neue Themen


Oben