Какой алгоритм сортировки используется .net в IComparer - PullRequest
5 голосов
/ 15 октября 2008

Кто-нибудь знает, какой алгоритм сортировки используется .net, когда мы реализуем IComparer в нашем классе?

Ответы [ 3 ]

10 голосов
/ 15 октября 2008

QuickSort , похоже, это.

Документация по IComparer говорит

Этот интерфейс используется вместе с методами Array.Sort и Array.BinarySearch .

Документация Array.Sort гласит

Этот метод использует алгоритм быстрой сортировки. Эта реализация выполняет нестабильную сортировку; то есть, если два элемента равны, их порядок может не сохраниться. Напротив, стабильная сортировка сохраняет порядок элементов, которые равны.

3 голосов
/ 15 октября 2008

Согласно MSDN , .NET использует QuickSort. Кстати, метод абсолютно не зависит от компаратора (если он основан на сравнении). Почему .NET должен использовать другой метод в зависимости от того, предоставляете ли вы собственный компаратор или нет?

2 голосов
/ 08 ноября 2017

В текущей документации говорится, что используется тип Introsort , алгоритм гибридной сортировки:

Работает так:

  1. Если размер раздела меньше 16 элементов, он использует сортировка вставок алгоритм

  2. Если число разделов превышает 2 * LogN, где N - диапазон входного массива использует алгоритм Heapsort .

  3. В противном случае используется алгоритм Quicksort .

    источник здесь

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