我们在.net中有排序和搜索功能吗?

时间:2010-06-28 07:19:11

标签: c# .net sorting collections search

我在集合中实现线性搜索搜索然后我想为什么不使用二进制搜索,我必须使用排序。 虽然我可以实现它们,但我想知道它们在.net本身中存在于何处。我希望它会出现在.Net中。

3 个答案:

答案 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代码,包括每个主要排序方法的实现。