# Sotieralgorithmus



## fornicator (18. Aug 2011)

Hallo zusammen,
ich habe folgende Aufgabe: Ich soll einen Algorithmus programmieren, der als Eingabe ein Feld voll Zahlen bekommt. Dan soll der Algorithmus sich aus dem Feld die kleinste Zahl raussuchen und mit der Zahl im ersten Feld vertauschen, dan die zweit kleinste Zahl suchen und dan mit der Zahl im zweiten Feld vertauschen und so weiter.
Mein Versuch:

```
public class test2 {

		public static void main(String[]args){
			int[] A = new int[6]; 
			              	A[0]=31;
			              	A[1]=41;
			              	A[2]=59;
			              	A[3]=26;
			                A[4]=43;
			                A[5]=58;
	
	
for(int a=0;a<A.length-2;a++)                 // hier geh ich alle Zahlen durch
{   int b=a+1;
    int zahl=A[a];         // die Variable in der die gesuchte kleine Zahl gespeichert werden soll
    int c=0;                // die Nummer von dem Feld in dem die kleinste Zahl gespeichert ist
	while(b<=A.length-1)                 // hier gehe ich alle andere Felder durch
            {if (A[b]<zahl){zahl=A[b];c=b;}}      //kleinste Zahl und deren array nummer Ermittlung
             int tausch=A[a];A[a]=zahl;A[c]=tausch;  // der Tausch der Zahlen
}
	  
	  
	for(int e=0;e<6;e++){System.out.print(A[e]+"\t");}  //Ausgabe des Ergebnisses
	}}
```

Mein erstes Problem ist, das wen ich den Algorithmus teste überhaupt nichts passiert - also nicht einmal die Ausgabe (im Code ganz unten) funktioniert - habe selber schon nach dem Fehler gesucht (vor allem ob ich irgendwo eine endloschleife gemacht habe) aber nichts gefunden - hoffe ihr könnt mir weiter helfen.


----------



## Andi_CH (18. Aug 2011)

Dein erstes Problem ist, dass du den Code selber nicht überblicken kannst.

Etwa so sollte er aussehen und dann gehst du den mal mit einem Debugger durch oder bastelst einige sysouts rein, dann siehst du was falsch läuft.


```
public class Test2 {
	public static void main(String[] args) {

		int[] arr = {31, 41, 59, 26, 43, 58};

		for (int i = 0; i < arr.length - 2; i++) // hier geh ich alle Zahlen durch
		{
			int b = i + 1;
			int zahl = arr[i];	// die Variable in der die gesuchte kleine Zahl gespeicher wird
			int c = 0;	// die Nummer des Feldes in dem die kleinste Zahl gespeichert ist
			while (b <= arr.length - 1) // hier gehe ich alle andere Felder durch
			{
				if (arr[b] < zahl) {
					zahl = arr[b];
					c = b;
				}
			} // kleinste Zahl und deren array nummer Ermittlung
			int tausch = arr[i];
			arr[i] = zahl;
			arr[c] = tausch; // der Tausch der Zahlen
		}
		for (int e = 0; e < 6; e++) {
			System.out.print(arr[e] + "\t");
		} // Ausgabe des Ergebnisses
	}
}
```


----------



## fornicator (20. Aug 2011)

OK danke- Fehler gefunden


----------



## Andi_CH (22. Aug 2011)

Wie wäre es mit  der Lösung - die Nachwelt interessiert sich vielleicht dafür...


----------

