Rekursiv-Sortieren

Das Komische ist, er verlangt wirklich ein Semikolon, nach dem Rekurivaufruf der Methode viod sort(). Also weisst du, ich arbeite mit Eclipse und die zeigen mir die Fehler immer gerade gleich an, und bei dieser Angelegenheit motzt er immer, wenn ich das Semikolon wegnehme.

lg
drpingoo
 
Falls du das mit dem Semikolon auf den Link beziehst dann ist das wohl richtig. Dort soll wenn if richtig ist nur das return ausgeführt werden. Also die Methode verlassen werden. Ansonsten war ich mal so dreist und habe deinen Quelltext kopiert und mit der Bubblesort Methode getestet.

Code:
void sort(int i) {
	  if ( i < 2) 
	  {
		  return;
	  }
	    
	  boolean p = true; int dummy;

	  for( int j = 1; j < i; j++)
	  {
		  if( a[ j - 1] < a[ j])
	      {
			  p = false; dummy = a[ j - 1];
			  a[ j - 1] = a[ j]; a[ j] = dummy;
	      }
	  }
	    
	  if(!p)
	  {
		  sort(i - 1);
	  }
  }

... und siehe da ... es funktioniert.
Einzig beim Aufruf von s.sort muss der Parameter statt 0 natürlich a.length sein.

Wenn du dann deine print Methode noch ein bisschen übersichtilicher machst ...
Code:
void print() {
        
     for(int i=0; i<a.length;i++) {
        System.out.print(a[i] + " ");
     }
     System.out.println();
  };
... kann man sich das Ergebnis auch noch wunderschön anzeigen lassen.

Ach und wenn du von groß nach klein sortieren willst, musst du nur das größer als in der if in der for Schleife zu nem kleiner als machen.

Gruß
sony2
 
Zuletzt bearbeitet:
Ich verzeihe dir deine Dreistigkeit:p. Danke, SONY2:) Wieso ist eigntl diese Boolean drin, das versteh ich nicht ganz? Und wehalb wir die Methode verlassen, wenn i kleiner als 2 ist? Ist a[0] sowieso der Programmname, sodass nur noch a[1] übrigbleibt, dass es aber nicht zu verstauschen gilt, da es eh nur ein einziges Element ist?

lg
drpingoo
 
Zurück