3 Zahlen in Java aufsteigend sortieren?

4 Antworten

Da es nur 6 mögliche Fälle gibt wäre es am kürzesten, einfach für jeden Fall ein If zu machen:

if (a < b && a < c && b < c)  System.out.println(a + ", " + b + ", " + c);
else if (a < b && a < c && c < b)  System.out.println(a + ", " + c + ", " + b);
else if (b < a && b < c && a < c) System.out.println(b + ", " + a + ", " + c);
else if (b < a && b < c && c < a) System.out.println(b + ", " + c + ", " + a);
else if (c < a && c < b && a < b) System.out.println(c + ", " + a + ", " + b);
else System.out.println(c + ", " + b + ", " + a);

Aber normalerweise benutzt man für sowas Sortieralgorithmen, oder zumindest Funktionen wie Math.min() und Math.max().

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

Wenn du einfach nur drei Zahlen sortiert ausgeben willst, ist der Aufwand viel zu groß. Das könntest du auch so machen:

System.out.println(Arrays.toString(IntStream.of(a, b, c).sorted().toArray()));

Oder falls du Streams noch nicht kennst, kannst du es auch mit einem Array machen:

int[] zahlen = {a, b, c};
Arrays.sort(zahlen);
System.out.println(Arrays.toString(zahlen));

Aber um deine Frage zu beantworten:

Wenn es wirklich mit drei getrennten Variablen und ohne integrierte Sortieralgorithmen und nur mit ifs sein soll, würde ich es am ehesten so machen:

if (a<b) {
	if (a<c) {
		if (b<c) {
			System.out.printf("%d, %d, %d", a, b, c);
		} else {
			System.out.printf("%d, %d, %d", a, c, b);
		}
	} else {
		System.out.printf("%d, %d, %d", c, a, b);
	}
} else {
	if (b<c) {
		if (a<c) {
			System.out.printf("%d, %d, %d", b, a, c);
		} else {
			System.out.printf("%d, %d, %d", b, c, a);
		}
	} else {
		System.out.printf("%d, %d, %d", c, b, a);
	}
}

Ein wenig systematischer finde ich die folgende Vorgehensweise:

def sort(a, b, c):
  # Schiebe das groesste Element nach hinten
  if a >= b:
    a, b, c = b, a, c
  if b >= c:
    a, b, c = a, c, b
  # Bringe die ersten beiden Variablen in die richtige Reihenfolge
  if a >= b:
    return b, a, c
  return a, b, c

Das ist Bubblesort für Eingaben der Länge 3.

MrAmazing2  03.07.2021, 20:48

Zuweisungen ist mogeln, er hat gesagt NUR if/else :D

0

Vom Prinzip geht es nicht viel einfacher, solange du keine Zuweisungen verwendest.

Von der Anordnung her gibt 3! = 6 verschiedene Eingaben (n! ist die Anzahl der möglichen Permutationen auf n Elementen), also brauchst du auch 6 verschiedene Ausgaben.
Die Auswahl der Ausgabe sollte in einem binären Entscheidungsbaum der Tiefe 3 möglich sein. Den würde ich einfach mal beginnend mit alle möglichen Ausgaben aufzeichnen, dann solltest du auch kürzere Bedingungen finden.