Ich denke, die Frage ist ziemlich klar: Ich habe drei Zahlen, ich habe zwei Funktionen, min und max.
Was sind die schnellsten Implementierungen?
Naive Lösung ist zwei verwenden zwei Vergleiche, um die min und dann zwei Vergleiche zu finden, um das Maximum zu finden. Dies ist nicht optimal, da drei Vergleiche genügen (Pseudocode-Returning (Min, Max) -Tupel folgt):
%Vor%(Dies wird geschrieben, um am besten lesbar zu sein, anstatt die Verzweigungsanzahl zu minimieren)
Dies führt zwischen 2 und 3 Vergleiche durch. Es ist unmöglich, nur 2 Vergleiche zu verwenden, da es 3 gibt! = 6 Neuordnungen von 3 Floats und 2 Vergleichen können nur zwischen 4 verschiedenen unterscheiden. Dies ist leicht in einem Entscheidungsbaum des Problems zu sehen.
In der Praxis sollte man sich für Optimierungen wie diese auf den Compiler verlassen.
Code, um die größte der drei Zahlen zu finden.
%Vor%Kehre die Logik um, um das Geringste zu finden:)
Tags und Links c floating-point max min