2013-12-13 37 views
4

我使用C#语言,我对List<Tuple<int,int>>有一些疑问。假设我创建了一个List<Tuple<int,int>>然后插入一些条目,将其想:(12,3),(154,43),(85,342)在c#中的列表<Tuple <int,int>>中的二进制搜索#

现在我想只是第一个项目,即仅仅通过item1搜索List,我想通过二进制搜索做到这一点。

是这样的:

List<Tuple<int,int>> tt = new List<Tuple<int,int>>(); 
tt.Add(new Tuple<int,int>(12,32)); 
tt.sort(); 
tt.binarysearch(item1:12); 

和一些输出是这样的:

12 32

现在有没有什么解决办法吗?

回答

6

是的,二分查找需要的IComparer,你可以创建一个IComparer<Tuple<int, int>>

因此继承了自己的自定义比较:

public class BinarySearchComparer : IComparer<Tuple<int, int>> 
{ 
    public int Compare(Tuple<int, int> f1, Tuple<int, int> f2) 
    { 
     return Comparer<int>.Default.Compare(f1.Item1, f2.Item1); 
    } 
} 

和示例:

tt.Binarysearch(12, new BinarySearchComparer()); 

查看更多信息:http://msdn.microsoft.com/en-us/library/ftfdbfx6(v=vs.110).aspx

+0

嘿Erti-Chris!非常感谢,你做到了! – Chavoosh

+0

这段代码是可执行的还是只是一个示例? – Chavoosh

+0

是的,它应该工作。我之前做过一些编辑,也许你没有刷新过? –

相关问题