在c#中对List <Tuple <int,int >>进行二进制搜索

Cha*_*osh 5 c# search list

我使用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);
Run Code Online (Sandbox Code Playgroud)

和一些像这样的输出:

12 32

现在有什么解决方案吗?

Ert*_*maa 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

和例子:

tt.Binarysearch(12, new BinarySearchComparer());
Run Code Online (Sandbox Code Playgroud)

有关信息,请访问:http://msdn.microsoft.com/en-us/library/ftfdbfx6(v = vs.110).aspx