Hi,
was alternierend genau bedeutet weis ich auch nicht genau. Doch ich habe eine Definition im Internet gefunden die lautet:
Ausserdem muss ein alternierendes Array mindestens 3 Elemente haben.
Nach dieser Definition sind dann folgende Array alternierend:
1 2 1
2 1 2
und folgende nicht
2 1 1
1 2 2
Hab das ganze dann so rekursiv gelöst:
/**
* Hilfsmethode zur Methode 'altmain()'. Prüft letztes und vorletztes
* Element ob >= oder <= und gibt so den Startwert für die Alternierung
* vor.
* @param a : Array
* @return boolean : true falls Elemente alternierend sortiert sind
*/
public static boolean alt(int[] a, int laenge){
// Nur dann wenn Array mindestens drei Elemente enthält.
if(laenge > 1 && a[laenge] > a[laenge-1]){
altmain(a, laenge, 1);
}else if(laenge > 1){
altmain(a, laenge, 0);
}
System.out.print("| - ");
return false;
}
/**
* Methode prüft ob Elemente (vom Typ int) in einem Array alternierend
* sortiert sind.
* @param a, laenge, i : Array und Länge vom Array, Startwert
* @return boolean : true falls Elemente alternierend sortiert sind
*/
public static boolean altmain(int[] a, int laenge, int i){
// Basisfall
if(laenge == 0){
System.out.print("| JA ");
return true;
}
if(i == 1){
// Rekursionsfall 1
if(a[laenge-1] < a[laenge]){
return altmain(a, laenge-1, 0);
}
}else{
// Rekursionsfall 2
if(a[laenge-1] > a[laenge]){
return altmain(a, laenge-1, 1);
}
}
System.out.print("| - ");
return false;
}[/PHP]