next up previous contents index
suivant: L'itérateur monter: Inversion de table de précédent: Constructeur   Table des matières   Index

Recherche de l'entrée dans la table

Il s'agit d'une recherche dichotomique classique. Il faut simplement faire attention à la multiplication par 3 des indices pour retomber toujours sur la première composante. De plus, lorsque l'intervalle $ [min,max]$ est réduit à 1, on renvoie l'indice le plus proche de la valeur d'entrée.

int colormap::give_entry(unsigned char value)
{
  int min(0),max(nb_color);

  int midle=(min+max)/2;
  
  while (max-min>1)
    {
      if(tab[3*midle]==value)
        return midle;
      
      if(tab[3*midle] > value)
        max=midle;
      else
        min=midle;
      midle=(min+max)/2;
    }
  if(value-tab[3*min] < tab[3*max]-value)
    return min;
  else
    return max;
}


Brun Luc 2004-03-25