Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c#中对泛型列表使用二进制搜索_C#_Sorting_Binary Search - Fatal编程技术网

如何在c#中对泛型列表使用二进制搜索

如何在c#中对泛型列表使用二进制搜索,c#,sorting,binary-search,C#,Sorting,Binary Search,我想对我的列表进行排序,然后使用二进制搜索在列表中找到一个名称并显示它 公共抽象类动物{ 保护整数 受保护字符串名 公共印刷品(){ 控制台写入线({ 年龄 } + { 名称 }); } 动物(){}~动物(){} } 公营宠物{ 私有列表=新列表(); 公共无效搜索(字符串m){ int index=list.BinarySearch(m); 如果(索引==0) 列表[索引].print(); } } 内置的BinarySearch方法不允许您传入列表类型以外的类型的值。要使用内置的,您需要定

我想对我的列表进行排序,然后使用二进制搜索在列表中找到一个名称并显示它

公共抽象类动物{
保护整数
受保护字符串名
公共印刷品(){
控制台写入线({
年龄
} + {
名称
});
}
动物(){}~动物(){}
}
公营宠物{
私有列表=新列表();
公共无效搜索(字符串m){
int index=list.BinarySearch(m);
如果(索引==0)
列表[索引].print();
}
}

内置的
BinarySearch
方法不允许您传入列表类型以外的类型的值。要使用内置的,您需要定义一个类,该类实现通过
Name
进行比较的
IComparer
,或者使
Animal
implement
IComparable
,以便默认情况下按名称比较两个动物。然后对列表进行
Sort()
并调用
BinarySearch
,传递一个包含要搜索名称的
Animal
实例

您必须实现自己的
BinarySearch
方法来搜索具有给定属性值的对象(当然,假设列表按相同属性排序)


如果您只想使用常规线性搜索方法来搜索具有给定名称的动物,您可以在找到具有该名称的项目时使用直接的
foreach
循环,
break
ing,或者使用
First()
Linq方法(基本上做相同的事情)。

请下次发布您的实际代码。你发布的内容无法编译。很抱歉,我压力很大,时间不多。什么是
animal(){}~animal(){}
?我努力清理代码,但没有弄明白这一点。另外,我想你是想在控制台.WriteLine()中使用字符串插值吗?@Hunter:我理解你的压力,而且时间不多。我们都去过!但花点时间仔细考虑你的问题将有助于确保你更快地得到有用的答案,并最终节省你的时间。