Почему последовательность 1,4,13,40,121 ... более эффективна, чем 1,2,4,8,16 ... при сортировке вставками? - PullRequest
6 голосов
/ 30 марта 2011

1,4,13,40,121 ... ((3 * n) + 1) работает немного более эффективно, чем 1,2,4,8,16 ... (2 * n) при вставке случайных чисел валгоритм сортировки.

Почему это так?Это как-то связано с потоками?

Спасибо.

1 Ответ

2 голосов
/ 30 марта 2011

Хорошо известно, что шаги приращения сортировки оболочки в 2 ^ k, 2 ^ (k-1), ..., 1 являются одними из худших. Например, вы сравниваете элементы только в нечетных позициях, а элементы в четных позициях - только на последнем шаге!

Другие шаги, кажется, (3 ^ k -1) / 2 (а не 3n + 1) и не страдают от проблем, таких как четная / нечетная проблема. Это не доказательство, но мы можем ожидать, что это будет лучше, чем степени 2.

Если вы ищете математический анализ, Shell Sort хорошо известна тем, что она заставляет математиков испытывать трудности.

Я не нашел анализа вашей последовательности в статье Седжвика здесь . У Perhap одной из книг Кнута есть это.

Удачи.

Кстати, почему вы спрашиваете о потоке?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...