procedure trouverPosition( int A[*], int n, int v ) returns int pos # PRECONDITION # n >= 1, # ALL( 1 <= i < n :: A[i] <= A[i+1] ) # POSTCONDITION # SOME( 1 <= i <= n :: A[i] = v ) => (1 <= pos <= n) & A[pos] = v, # ALL ( 1 <= i <= n :: A[i] ~= v ) => pos = 0 { pos = trouverPosRec( A, 1, n, v ); } procedure trouverPosRec( int A[*], int inf, int sup, int v ) returns int pos { if (inf == sup) { if (A[inf] == v) { pos = inf; } else { pos = 0; } } else { int m = (inf+sup)/2; if (v <= A[m]) { pos = trouverPosRec(A, inf, m, v); } else { pos = trouverPosRec(A, m+1, sup, v); } } }