加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何使用BinarySearch列表

发布时间:2020-12-15 03:51:46 所属栏目:百科 来源:网络整理
导读:我们从List BinarySearch的这个重载开始: public int BinarySearch(T item,IComparerT comparer); 众所周知,在使用BinarySearch之前,该列表应与适当的IComparer进行排序.但是然后:要搜索列表,您将必须提供一个T项目.当根据这些项目的属性(即使用Linq或委托
我们从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,尽管(使用无参数构造函数等).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读