# Codehinweise: Algorithmus Größenvergleich von n Zahlen



## RoKStaR (25. Mai 2011)

Hi!

Nach bestimmt 20 Ansätzen und endlosen Stunden des Grübelns möchte ich das Forum um Rat fragen. Es ist keine Hausarbeit, sondern eine reine Interessensfrage:

Ich habe n verschiedene Zahlen, die ich alle miteinander vergleichen möchte und die eine bestimmte Reihenfolge haben. (beispiel mit 5 zahlen 5  13  7  11  20)

Lediglich, wenn die Reihenfolge von klein nach groß korrekt ist (5  7  11  13  20)bzw. von groß nach klein (20  13  11  7  5), dann soll er irgendwas machen. bei allen anderen Fällen soll er was anderes machen.

Da ich die Anzahl der Zahlen, die in die Liste kommen variable halten möchte, fällt mir (1. Semester Java-Programmierung) keine Möglichkeit ein, wie ich dies algorithmisch darstellen kann...

Gibts da Chancen? MfG - RoKStaR


----------



## André Uhres (25. Mai 2011)

Hallo RoKStaR,

versuch's mal so (Pseudocode):


```
absteigend = false
aufsteigend = false
index = 0
alteZahl = liste.get(index)
while (index < liste.size)
      zahl = liste.get(index)
      if (zahl < alteZahl) then 
         absteigend = true
      else if (zahl > alteZahl) then 
         aufsteigend = true
      end
      alteZahl = zahl
      index++
end
if (absteigend und nicht aufsteigend) then 
   ...(absteigende Zahlen)
else if (aufsteigend und nicht absteigend) then 
   ...(aufsteigende Zahlen)
else if (nicht aufsteigend und nicht absteigend) then 
   ...(alle Zahlen sind gleich)
else 
   ...(Reihenfolge unbestimmt)
end
```
Gruß,
André


----------



## schlingel (25. Mai 2011)

Hier stand blödsinn


----------



## tuttle64 (25. Mai 2011)

im folgenden link findest du eine auswahl an sortieralgorithmen die du für die sortierung verwenden kannst.


----------



## André Uhres (27. Mai 2011)

tuttle64 hat gesagt.:


> Sortieralgorithmen



RoKStaR will eigentlich nicht sortieren, sondern nur die Art der Reihenfolge bestimmen .

Gruß,
André


----------



## Landei (27. Mai 2011)

ungetestet...

```
public static boolean aufOderAbsteigend(int... werte) {
   return aufsteigend(werte) || absteigend(werte) ;
}

public static boolean aufsteigend(int ... werte) {
    for(int i = 1; i < werte.length; i++) {
        if (werte[i-1] >= werte[i]) {
           return false;  
        }
    }
    return true;
}

public static boolean absteigend(int ... werte) {
    for(int i = 1; i < werte.length; i++) {
        if (werte[i-1] <= werte[i]) {
           return false;  
        }
    }
    return true;
}

...

public static void main() {
   if (aufOderAbsteigend(1,2,5,6,8)) {
        System.out.println("1,2,5,6,8 ist auf- oder absteigend");
   }
   if (aufOderAbsteigend(1,2,5,3,6,8)) {
        System.out.println("1,2,5,3,6,8 ist auf- oder absteigend");
   }
   if (aufOderAbsteigend(7,4,2,1)) {
        System.out.println("7,4,2,1 ist auf- oder absteigend");
   }
}
```


----------

