Heapsort Code Verständnisprobleme


#1
Hallo ich war auf der Suche einer HeapSort Implementation und habe eine gefunden. Ich verstehe den ganzen Code bis auf einen kleinen Teil der da wäre:
Java:
if (r <= heapGroesse) 
            {
                sohn = liste[l] < liste[r] ? // Diese Zeile verstehe ich nicht
                l:                                      // Diese auch
                r;                                     // Diese auch
                if (liste[sohn] < liste[dieserKnoten])
                {   
                    tausche(liste, dieserKnoten, sohn);
                    macheHeapFuerKnoten(liste, sohn, heapGroesse);
                }
            }
Wäre echt toll wenn mir jemand diesen Teil erklären könnte. Danke im voraus :)
 
Zuletzt bearbeitet:
#2
Das ist eine etwas ungewöhnliche Notation der Kurzform des ifs.
Java:
a ? b : c;
// ist wie:
if(a) {
   b;
} else {
   c;
}
In dem konkreten Fall:
Java:
if(liste[l] < liste[r]) {
   sohn = l;
} else {
   sohn = r;
}
Siehe: ?:

Grüsse
Cromon