Ordinare 3 dati

Prova con i numeri

+-----+-----+-----+
|  x1 |  x2 |  x3 |
+-----+-----+-----+
| 100 |   9 |  -8 | (x1 > x2)? Sì, scambia
|   9 | 100 |  -8 | (x2 > x3)? Sì, scambia
|   9 |  -8 | 100 | (x1 > x2)? Sì, scambia
|  -8 |   9 | 100 | 
+-----+-----+-----+

In generale

+----+----+----+
| x1 | x2 | x3 | Prima
+----+----+----+
| r1 | r2 | r3 | Dopo
+----+----+----+
+----+----+----+
| x1 | x2 | x3 | (x1 > x2)? Confronta x1 con x2 e se necessario effettua lo scambio dei valori
+-\/-+-\/-+----+
| m1 | M1 | x3 | Adesso m1 è un minimo locale e M1 è un massimo locale
+----+----+----+
+----+----+----+
| x1 | x2 | x3 | (x1 > x2)?
+-\/-+-\/-+----+
| m1 | M1 | x3 | (M1 > x3)? Confronta M1 con x3
+----+-\/-+-\/-+
| m1 | i1 | r3 | In 3° posizione c'è il massimo globale, in 2° posizione un valore intermedio
+----+----+----+
+----+----+----+
| x1 | x2 | x3 | (x1 > x2)?
+-\/-+-\/-+----+
| m1 | M1 | x3 | (M1 > x3)?
+----+-\/-+-\/-+
| m1 | i1 | r3 | (m1 > i1)? Confronta m1 con i1
+-\/-+-\/-+----+------------+
| r1 | r2 | r3 | In 1° posizione il minimo globale, in 2° il valore intermedio
+----+----+----+

Per ordinare 3 dati sono necessari 3 confronti ed eventualmente 3 scambi


Codifica Pascal

If x1 > x2 Then
    Begin
        temp:=x1;
        x1  :=x2;
        x2  :=temp;
    End;

If x2 > x3 Then 
    Begin 
        temp:=x2;
        x2  :=x3;
        x3  :=temp; 
    End;

If x1 > x2 Then
    Begin
        temp:=x1;
        x1  :=x2;
        x2  :=temp;
    End;