Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Алгоритмы _ Сортировка Шелла

Автор: -=АнЮтА=- 14.11.2006 18:19

Дело то в том,что мы просто попарно сравниваем эл-ты отстоящие др. от др. на определённый шаг и всё. А как мне помнится, мы должны из массива вытащить подмассив, его отсортировать и загнать опять в основной массив.
К примеру:
3 2 1 4 7 2 3 6 18 11 9 5 3 - отсоритрованный массив после шага 6
Берём шаг равный 3 и вытаскиваем подмассив:
3 4 3 11 3
Его сортируем и получаем:
3 3 3 4 11
Заносим в основной массив:
3 2 1 3 7 3 6 18 4 9 5 11
(потом переходим к следущему эл-ту(в нашем случае он равен 2) и опять вытаскиваем подмассив)
Вот правильный алгоритм сортировки. - цитата из темы форума

Меня тоже очень заинтересовал метод сортировки Шелла, но мне никак не понятно - если мы имеем шаг допустим 3, то ведь берем не только пары элементов 3 4 3 11 3, а как же 2 7 6 и 9, между ними ведь тоже шаг 3, ведь массив будет не однозначен с такми шагом. Или я недопонимаю? Подскажите пожалуйста, как именно происходит эта сортировка, мы все сравниваем элементы с таким шагои или которые только по порядку вытащим? У меня сложилось такое впечатление, что только которые "вытащатся " по порядку)

Автор: SkIv 18.11.2006 13:13

Дело в том что шаг не постоянный, допустим сначала у тебя он равен три, начинаеш сравнивать первый с четвертым, четвертый с седьмым и т.д., потом делаеш тоже сомое но со второго элемента, далее с третьего для шага три закончили, теперь уменьшаем шаг (например на один) и делаем тоже самое.