如何在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
implementIComparable
,以便默认情况下按名称比较两个动物。然后对列表进行Sort()
并调用BinarySearch
,传递一个包含要搜索名称的Animal
实例
您必须实现自己的BinarySearch
方法来搜索具有给定属性值的对象(当然,假设列表按相同属性排序)
如果您只想使用常规线性搜索方法来搜索具有给定名称的动物,您可以在找到具有该名称的项目时使用直接的
foreach
循环,break
ing,或者使用First()
Linq方法(基本上做相同的事情)。请下次发布您的实际代码。你发布的内容无法编译。很抱歉,我压力很大,时间不多。什么是animal(){}~animal(){}
?我努力清理代码,但没有弄明白这一点。另外,我想你是想在控制台.WriteLine()中使用字符串插值吗?@Hunter:我理解你的压力,而且时间不多。我们都去过!但花点时间仔细考虑你的问题将有助于确保你更快地得到有用的答案,并最终节省你的时间。