C#在2个索引上进行二进制搜索

问题描述:

我有一个具有属性的对象;的startIndex,endIndex的C#在2个索引上进行二进制搜索

我能够做到通过实施基于的startIndex二进制搜索如下:然而以相同的重复对象

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

I D喜欢做的二进制搜索还对年底指数分别。

我该怎么做?

谢谢。

+1

您可能想要使用IComparable的类型化版本,如IComparable ,它将定义CompareTo(Repeat r)而不是无类型对象。 – 2010-01-03 03:29:09

如果您使用的Array.BinarySearch()List<T>.BinarySearch()方法,您可以使用需要一个IComparerIComparer<T>过载。然后,您可以在单独的类中实现比较语义,并在您想要进行搜索时将其传入。

+0

我使用列表。我看到列表上的二进制搜索也需要一个IComparer。那应该是吧? – DarthVader 2010-01-03 03:27:54

+0

是的,它应该工作。 – SLaks 2010-01-03 03:29:10

+0

太好了。谢谢 :) – DarthVader 2010-01-03 03:30:53