Как работает Array.Sort - C#
Формулировка задачи:
Собственно вопрос в том, как всё-таки работает сортировка Array.Sort?
Этот вопрос возник потому, что после анализа время ее работы с другими сортировками (к примеру быстрой и Шелла) заметна победа Array.Sort причем с очень значительным отрывом.
Пробовал просматривать ее Deflector'ом, но как-то я запутался там. Может быть кто-то в более понятной форме может объяснить на каких алгоритмах она основана?
Решение задачи: «Как работает Array.Sort»
textual
Листинг программы
private static void IntroSort(T[] keys, int lo, int hi, int depthLimit, IComparer<T> comparer) { while (hi > lo) { int num = (hi - lo) + 1; if (num <= 0x10) { switch (num) { case 1: return; case 2: ArraySortHelper<T>.SwapIfGreater(keys, comparer, lo, hi); return; case 3: ArraySortHelper<T>.SwapIfGreater(keys, comparer, lo, hi - 1); ArraySortHelper<T>.SwapIfGreater(keys, comparer, lo, hi); ArraySortHelper<T>.SwapIfGreater(keys, comparer, hi - 1, hi); return; } ArraySortHelper<T>.InsertionSort(keys, lo, hi, comparer); return; } if (depthLimit == 0) { ArraySortHelper<T>.Heapsort(keys, lo, hi, comparer); return; } depthLimit--; int num2 = ArraySortHelper<T>.PickPivotAndPartition(keys, lo, hi, comparer); ArraySortHelper<T>.IntroSort(keys, num2 + 1, hi, depthLimit, comparer); hi = num2 - 1; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д