Какая сортировка алгоритма используется Массивом.NET. Вид () метод?

Вы можете создать интерфейс. Например,

struct A {};                          // As you have defined                                                               
void set_b_for_A(struct A, int) {}    // function that works with A                                          

// interface                                                                          
struct helper {                                                                 
    void *ptr;                        // pointer to your structs variants (A, ...)                                                         
    void (*set_b)(struct helper *, int);   // helper to dispatch to correct worker                                          
};                                                                              


void set_b_helper_for_A(struct helper *pointer, int i) {   // helper for worker A                            
    struct A *s = (struct A *) pointer->ptr;                                    
    set_b_for_A(*s, i);                                                         
} 

struct helper helper_A {/* A struct */, set_b_helper_for_A};

Теперь ваш API

void set_b(struct helper *ptr, int i) {
     ptr->set_b(ptr, i);
}

и вы звоните, например:

set_b(&helper_A, 0);

Сделайте то же самое для других структур

16
задан Mike Chamberlain 22 June 2016 в 13:26
поделиться

3 ответа

Он использует алгоритм QuickSort .

Источник :

2
ответ дан 30 November 2019 в 21:19
поделиться

Еще некоторые примечания от MSDN

Этот метод используют самосозерцательный вид (introsort) алгоритм следующим образом:

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

вставки, Если количество [1 113] разделы превышают 2 * LogN, где N является диапазоном входного массива, он использует алгоритм Пирамидальной сортировки .

Иначе , это использует алгоритм Quicksort .

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

Для массивов, которые отсортированы при помощи алгоритмов Heapsort и Quicksort в худшем случае, этот метод является O (n, регистрируют n), операция, где n является длиной.

Примечания Вызывающим сторонам Платформа.NET 4 и более ранние версии использовала только алгоритм Quicksort. Quicksort определяет недопустимые компараторы в некоторых ситуациях, в которых операция сортировки выдает исключение IndexOutOfRangeException и выдает исключение ArgumentException вызывающей стороне. Начиная с Платформы.NET 4.5, возможно, что сортировка операций, которые ранее бросили ArgumentException, не выдаст исключение, потому что вид вставки и пирамидально сортирует алгоритмы, не обнаруживают недопустимый компаратор. По большей части это относится к массивам меньше чем с 16 элементами.

0
ответ дан 30 November 2019 в 21:19
поделиться
-1
ответ дан 30 November 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: