c# – 如何使用BinarySearch列表
我们从List BinarySearch的这个重载开始:
public int BinarySearch(T item,IComparer<T> comparer); 众所周知,在使用BinarySearch之前,该列表应与适当的IComparer进行排序.但是然后:要搜索列表,您将必须提供一个T项目.当根据这些项目的属性(即使用Linq或委托/谓词)用于搜索列表中的项目时,这是非常意想不到的.因为当我已经有我的T项目,我不必搜索它! 现在我正在C#中实现C代码,看到C程序员在他的代码中使用了C风格的二进制搜索,如下所示.首先,他做了一个新的T项目,并给了这个T项目他正在寻找的属性.然后他用它搜索列表,找到具有相同属性的列表中的项目的索引.当然,C比较器适应这些属性. 所以这是一个完全不同的方式来查找列表中的项目. BinarySearch创建一个虚拟T项,并搜索一个索引,通过它可以在列表中检索真实的T项.从Linq的角度来看,这感觉不自然. 我的问题是: 我是否正确描述了BinarySearch背后的想法? 您认为可以使用BinarySearch进行Linq风格搜索,而不会首先创建虚拟T项目? 解决方法
我是否正确描述了BinarySearch背后的想法?
是. 您认为可以使用BinarySearch进行Linq风格搜索,而不会首先创建虚拟T项目?不是现在的形式.您可以使用一个为您创建虚拟T的包装器,但它仅适用于特定的Ts,尽管(使用无参数构造函数等). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |