我使用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
现在有什么解决方案吗?
答案 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