2
CirciterЦитата:
Ну бросьте, обмен бесплатен, . :) Т.е., достаточно обменивать местами указатели, а не копировать сами сортируемые данные.
Точно? Ведь если работать через указатели, то появляется дополнительная емкостная сложность (для их хранения), которая
. Тогда как в той же ангоязычной статье с Вики про методы сортировки описывается множество алгоритмов, которые задействуют обмен, но при этом их емкостная сложность равна
[см. табличку
http://en.wikipedia.org/wiki/Sorting_algorithm].
Цитата:
Имхо, здесь у вас путаница. Тот волшебный алгоритм использует дополнительную информацию об ограниченности множества сортируемых значений для снижения сложности. Можно даже условно сказать, что для снижения сложности сравнений так, чтобы она была дешевле чем константа. :)
Правильно ли я понимаю, тому алгоритму в явном виде предоставляют информацию о границе значений ключей, поэтому он улучшает эффективность. Тогда как другие алгоритмы,
хотя тоже работают в предположении ограниченности множества ключей, но в каждом конкретном случае это ограничение может быть своим, потому они и не могут в общем случае улучшить свой результат?
Цитата:
В обычных же алгоритмах, как я уже сказал, просто считают сложность сравнений константной и все тут.
Ясно. Просто нигде в явном виде я этого не встретил, оттого и возник вопрос.
Цитата:
На деле-же, конечно, с настоящими бесконечными объектами компьютеры работать, вообще говоря, не умеют. :)
С бесконечными - да, но никто не запрещает им работать с конечными, но сколь угодно близкими к бесконечным.
Цитата:
То есть, куда-то вас в философию уводит.
Наоборот, в практику. Допустим, будет у кого-то задача, связанная с сортировкой in place больших (не помещающимися в разрядность процессора) чисел. И не знай он этих ньюансов, возьмет и прикинет по "общеизвестной" формуле
для пирамидальной сортировки порядок времени выполнения. Окажется, доли секунды. Он обрадуется и начнет реализацию проекта. А на деле что? На деле он столкнется с тем, что время может стать существенно больше - придется тратить дополнительное время на пересылку, которое
, где
- разрядность числа.
2
PswИз Кнута:
"
Программы для компьютера MIX будут, как правило, написаны в предположении, что ключ - числовой и что он помещается в одном слове; иногда мы даже будем ограничивать значения ключей так, чтобы они занимали лишь часть слова.[...] Вместе с программами для MIX приводится анализ времени выполнения соответствующего алгоритма сортировки."
То есть, все-таки получается, что при оценке сложности считается, что множество ключей ограничено. Верно?