Ordinare 3 dati

Prova con i numeri

+-----+-----+-----+
|  x1 |  x2 |  x3 |
+-----+-----+-----+------------+
| 100 |   9 |  -8 | (x1 > x2)? |
|   9 | 100 |  -8 | (x2 > x3)? |
|   9 |  -8 | 100 | (x1 > x2)? |
|  -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 |            |  m1 è un minimo locale, M1 è un massimo locale.
+----+----+----+------------+
+----+----+----+------------+
| x1 | x2 | x3 | (x1 > x2)? |
+-\/-+-\/-+----+------------+
| m1 | M1 | x3 | (M1 > x3)? |  Confronta M1 con x3
+----+-\/-+-\/-+------------+
| m1 | i1 | r3 |            |  In 3° posizione 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

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;