metaclass: (Default)
[personal profile] metaclass
Народ развлекается забавной задачкой про stl и quicksort.
Заглянув в исходники stl, я понял, что называть это "обычным quicksort" это какое-то явное издевательство.
И еще оказалось, что обычный quicksort из дельфи работает раза в два медленнее чем этот хитрый std::sort, хотя я думаю, кроме всех оптимизаций, там еще косвенный вызов функции сравнения в дельфи свою лепту вносит.

Date: 2009-01-06 09:51 pm (UTC)
From: [identity profile] x-a-e-p.livejournal.com
Хотя бы то, что сложность сортировки гарантированно должна быть(по стандарту) O(N*log(N)), говорит о том, что это не quicksort.

Date: 2009-01-06 10:19 pm (UTC)
From: [identity profile] x-a-e-p.livejournal.com
Ну то есть короче вся проблема в трёх первых словах по линке("Все мы знаем...")

Date: 2009-01-06 10:47 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Там проблема в том, что rand выдает мало случайных чисел, поэтому после того как размер становится больше чем их количество - линейный рост прекращается.

Date: 2009-01-09 05:29 pm (UTC)
From: [identity profile] familom.livejournal.com
Как ни странно, но в стандарте только про
Complexity: Approximately N log N (where N == last - first) comparisons on the average
написано.

Date: 2009-01-06 10:57 pm (UTC)
From: [identity profile] x-a-e-p.livejournal.com
Ну я скорее спорил насчёт quicksort

Date: 2009-01-07 07:27 am (UTC)
From: [identity profile] tonal.myopenid.com (from livejournal.com)
по сравнению с делфовой версией там вроде только 2 заметных улучшения:
1. Инлайнинг функции сравнения
2. Сортировка коротких последовательностей с помощью вставок.
Остальное мелкие оптимизации - типа немного разных алгоритмов для граничных и внутренних подпоследовательностей.

Кроме 1-го всё можно без труда повторить на дельфе для конкретного типа.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 10th, 2025 12:54 pm
Powered by Dreamwidth Studios