сортировка шелла на списках о_О
Так что все нормально
пара курсоров на нужном расстоянии пробегают и меняют.
скажем, если ключи 9, 5, 3, 2, 1, то мы чтобы пройти элементы отстоящие друг ну друга на 9 позиции все равно пройдем весь список. обычная сортировка вставкой тут будет работать скорее всего быстрее, разве нет?
а этот шелл неплохая иллюстрация оперирования списком сразу в нескольких местах,
и работать он тут будет с такой-же асимптотикой как и при случайном доступе.
для шага 9 тебе надо сначала сделать 9 сдвигов (то есть O(1 а потом гнать пару указателей по всему списку
мне кажется, что эта задача совсем не на сортировку, а на то чтоб не обдолбались с указателями
например, переставив два элемента можно случайно забыть, что указатели тоже поменялись местами
А, догнал. тупил.
всем спасибо!
Оставить комментарий
Vadim69
что надо курить, чтоб такое задание детям дать? у меня сестра из универа притащила. дан односвязный список. отсортировать его методом Шелла. список, да еще односвязный - там же дофига ненужных действий по переходу к нужному элементу получится, или я чего-то не понимаю?