Я трачу некоторое время на реализацию алгоритма быстрой сортировки в C #.После окончания я сравнил скорость моей реализации и C # Array.Sort-Method.
Я просто сравнил скорость работы со случайными массивами int.
Вот моя реализация:
static void QuickSort(int[] data, int left, int right)
{
int i = left - 1,
j = right;
while (true)
{
int d = data[left];
do i++; while (data[i] < d);
do j--; while (data[j] > d);
if (i < j)
{
int tmp = data[i];
data[i] = data[j];
data[j] = tmp;
}
else
{
if (left < j) QuickSort(data, left, j);
if (++j < right) QuickSort(data, j, right);
return;
}
}
}
Производительность (при сортировке случайного типа int [] длиной 100000000):
- мой алгоритм: 14,21 секунды
- .Net Array .Sort: 14,84 секунды
Кто-нибудь знаеткак реализовать мой алгоритм еще быстрее?
Или кто-нибудь может предложить более быструю реализацию (не нужно быть быстрой сортировкой!), которая будет работать быстрее?
Примечание:
- пожалуйста, не используйте алгоритмы, которые используют несколько ядер/ процессоры для улучшения производительности
- только действительный исходный код C #
Я проверю работоспособность предоставленных алгоритмов в течение нескольких минут, если я в сети.
РЕДАКТИРОВАТЬ:
Как вы думаете, использование идеальной сети сортировки для деталей, содержащих менее 8 значений, улучшит производительность?