我如何在 C# 中使用二进制搜索来获取通用列表
how can i use binary search in c# for generic list
我想对我的列表进行排序,然后使用二进制搜索在列表中找到一个名称并显示它。
public abstract class animal {
protected int age
protected string name
public print() {
console.writeline({
age
} + {
name
});
}
animal() {}~animal() {}
}
public class pets {
private List<animal> list = new List<animal>();
public void search(string m) {
int index = list.BinarySearch(m);
if (index == 0)
list[index].print();
}
}
内置的BinarySearch
方法不允许您传入列表类型以外的类型的值。要使用内置 BinarySearch
,您需要定义一个 class 实现 IComparer<Animal>
比较 Name
,或者使 Animal
实现 IComparable<Animal>
以便默认情况下按名称比较两种动物。然后您 Sort()
列表并调用 BinarySearch
,传递具有您要搜索的名称的 Animal
实例。
您必须实现自己的 BinarySearch
方法来搜索具有给定 属性 值的对象(当然,假设列表按相同的 属性).
如果您只想使用常规线性搜索方法搜索具有给定名称的动物,您可以使用直接 foreach
循环,break
ing 当具有该名称的项目是找到,或使用 First()
Linq 方法(基本上做同样的事情)。
我想对我的列表进行排序,然后使用二进制搜索在列表中找到一个名称并显示它。
public abstract class animal {
protected int age
protected string name
public print() {
console.writeline({
age
} + {
name
});
}
animal() {}~animal() {}
}
public class pets {
private List<animal> list = new List<animal>();
public void search(string m) {
int index = list.BinarySearch(m);
if (index == 0)
list[index].print();
}
}
内置的BinarySearch
方法不允许您传入列表类型以外的类型的值。要使用内置 BinarySearch
,您需要定义一个 class 实现 IComparer<Animal>
比较 Name
,或者使 Animal
实现 IComparable<Animal>
以便默认情况下按名称比较两种动物。然后您 Sort()
列表并调用 BinarySearch
,传递具有您要搜索的名称的 Animal
实例。
您必须实现自己的 BinarySearch
方法来搜索具有给定 属性 值的对象(当然,假设列表按相同的 属性).
如果您只想使用常规线性搜索方法搜索具有给定名称的动物,您可以使用直接 foreach
循环,break
ing 当具有该名称的项目是找到,或使用 First()
Linq 方法(基本上做同样的事情)。