class RadixSorter: FileSorter
{RadixSorter (string name, string [] files)
: base (name, files)
{
} int getDigit (int i, int digit)
{(i/(int) Math.Pow (10, digit - 1))% 10;
}
override void beginSort (ref int [] list, int start, int end)
{range = 10; m = 10; [] arr = new List [range]; (int i = 0; i (); (int i = 1; i
{
// Вибираємо список (int j = 0; j
{temp = getDigit (list [j], i); [temp]. Insert (0, list [j]);
}
// Склеюємо спіскіl = 0; (int j = 0; j
{(int z = arr [j]. Count - 1; z> = 0; z -) [l + +] = arr [j] [z]; [j]. Clear ( );
}
}
} override FileSorter Copy (string name, string [] files)
{new RadixSorter (name, files);
}
}
Результати тестування сортировок:
Таблиця 1. Метод швидкого сортування M = 1
Середній час сортування, mksСтепень перемешенностіКол-ть елементів в файле0255075100Общій ітог292930542338382833073091
Таблиця 2. Метод швидкого сортування M = 256
Середній час сортування, mksСтепень перемешенностіКол-ть елементів в файле0255075100Общій ітог248126512454248130132616
Таблиця 3. Метод порозрядної сортування
Середній час сортування, mksСтепень перемешенностіКол-ть елементів в файле0255075100Общій ітог122795311553241164510120951711954991190561
Графіки залежності часу сортування від кол-ва елементів у файлі і від ступеня перемісили елементів
Графік 1. Швидке сортування з параметром M = 1
Графік 2. Швидке сортування з параметром M = 256
Графік 3. порозрядну сортування
В
Наступні графіки будуються за середнім значенням заданого ключа.
Таблиця 4. Залежність часу сортування від кол-ва елементів в даному масиві
Кількість елементовБистрая сортування, M = 1Бистрая сортування, M = 256Поразрядная
В