Реализация самого быстрого безопасного алгоритма сортировки

Я потратил некоторое время на реализацию алгоритма быстрой сортировки на 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 значений, может улучшить производительность?

5
задан raisyn 15 September 2010 в 17:41
поделиться