Есть ли у нас функция сортировки и поиска в .net? - PullRequest
2 голосов
/ 28 июня 2010

Я реализовал линейный поиск для поиска в коллекции, и я подумал, почему бы не использовать бинарный поиск, для чего мне пришлось использовать сортировку. Хотя я могу их реализовать, но мне хотелось бы знать, где они существуют в самом .net. Я надеюсь, что это будет присутствовать в .Net.

Ответы [ 3 ]

4 голосов
/ 28 июня 2010

Если я не понял неправильно, это то, что вы ищете

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));
3 голосов
/ 28 июня 2010

С этот SO ответ:

.NET использует вариацию быстрой сортировки (медиана Седжвика, равная 3 быстрой сортировке).

2 голосов
/ 28 июня 2010

.NET имеет сортировку, реализованную по умолчанию, но, хотя вы можете указать порядок, в котором вы хотите отсортировать элементы, вы не можете указать алгоритм, с помощью которого она сортируется.

Как таковая, вас может заинтересовать эта статья , которая предоставляет код .NET для абстрактной сортировки, включая реализации всех основных методов сортировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...