我在集合中实现线性搜索搜索然后我想为什么不使用二进制搜索,我必须使用排序。 虽然我可以实现它们,但我想知道它们在.net本身中存在于何处。我希望它会出现在.Net中。
答案 0 :(得分:4)
如果我没有弄错,这就是你要找的东西
public class Person
{
public int age;
public string name;
public Person(int age, string name)
{
this.age = age;
this.name = name;
}
}
List<Person> people = new List<Person>();
people.Add(new Person(50, "Fred"));
people.Add(new Person(30, "John"));
people.Add(new Person(26, "Andrew"));
people.Add(new Person(24, "Xavier"));
people.Add(new Person(5, "Mark"));
people.Add(new Person(6, "Cameron"));
搜索
// with delegate
List<Person> young = people.FindAll(delegate(Person p) { return p.age < 25; });
// with lammda
List<Person> young = people.FindAll(a=> a.age < 25);
排序
// with delegate
people.Sort(delegate(TestKlasse a, TestKlasse b) { return a.age.CompareTo(b.age); });
// with lambda function
people.Sort((a, b) => a.age.CompareTo(b.age));
答案 1 :(得分:3)
来自this SO回答:
.NET使用Quicksort的变体(Sedgewick的中位数为3 Quicksort)。
答案 2 :(得分:2)
.NET默认情况下已实现排序,但您可以指定排序元素的顺序,但不能指定排序的算法。
因此,您可能对this article感兴趣,{{3}}提供用于抽象排序的.NET代码,包括每个主要排序方法的实现。