List <tuple <int,int>&gt;上的二进制搜索在c#</tuple <int,int>中

时间:2013-12-13 12:59:19

标签: c# list search

我使用C#语言,我对List<Tuple<int,int>>有一点疑问。假设我创建了一个List<Tuple<int,int>>,然后插入了一些条目,如:(12,3),(154,43),(85,342)

现在我想通过第一项搜索List JUST,即仅item1,我希望通过二分搜索来完成。

类似的东西:

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

现在有什么解决方案吗?

1 个答案:

答案 0 :(得分:6)

是的,BinarySearch需要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