2010-01-03 5 views
2

J'ai un objet avec des attributs; startIndex, endIndexC# Recherche binaire sur 2 index

Je suis capable de faire une recherche binaire basée sur startIndex en mettant en œuvre les éléments suivants:

 int IComparable.CompareTo(object obj) 
     { 
      Repeat r = (Repeat)obj; 
      return this.startIndex.CompareTo(r.startIndex); 
     } 

Cependant, avec la même répétition d'objets que je tiens à le faire une recherche binaire aussi sur l'indice final séparément.

Comment puis-je faire cela?

Merci.

+1

Vous pouvez utiliser la version typée de IComparable, telle que IComparable qui définirait un CompareTo (Repeat r) plutôt que l'objet non typé. –

Répondre

4

Si vous utilisez les méthodes Array.BinarySearch() ou List<T>.BinarySearch(), vous pouvez utiliser la surcharge qui prend un IComparer ou IComparer<T>. Vous pouvez ensuite implémenter la sémantique de comparaison dans une classe distincte et la transmettre lorsque vous souhaitez effectuer une recherche.

+0

J'utilise la liste . Je vois que la recherche binaire sur liste prend aussi un IComparer. Alors ça devrait être ça? – DarthVader

+0

Oui, ça devrait marcher. – SLaks

+0

Génial. Merci :) – DarthVader