Сортировка строки методом Боуза-Нельсона
|
|
Zmei_2015 | Дата: Пятница, 06 Мая 2016, 12:23 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Доброго времени суток друзья. Помогите кто может. Весь интернет уже облазил. Суть задачи. Нужно отсортировать строку методом Боуза-Нельсона. Кто нибудь знаком с этим методом? Помогите кодом кто может.
|
|
| |
Gudleifr | Дата: Пятница, 06 Мая 2016, 12:31 | Сообщение # 2 |
почти ветеран
Сейчас нет на сайте
| Дык, в том коде, что Вы приводили на других форумах, все очевидно. Что Вам там конкретно непонятно?
Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
|
|
| |
Zmei_2015 | Дата: Пятница, 06 Мая 2016, 12:49 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Цитата Gudleifr ( ) Дык, в том коде, что Вы приводили на других форумах, все очевидно. Что Вам там конкретно непонятно? Ну этот код работает с числами,а мне то со строкой надо. Да и там используется рекурсия. Мне вот она и не понятна. Вот я и ищу способы по легче. Если поможете облегчить код буду вам благодарен. Просто как вы уже заметили на остальных форумах мне не объяснили и не помогли.
|
|
| |
Gudleifr | Дата: Пятница, 06 Мая 2016, 13:07 | Сообщение # 4 |
почти ветеран
Сейчас нет на сайте
| Цитата Zmei_2015 ( ) Ну этот код работает с числами,а мне то со строкой надо. Символы - это тоже числа, только маленькие. Посмотрите внимательно, как хранятся строки в Вашей версии PASCAL. Преобразования же из символов в числа и обратно, для PASCAL, вроде, стандартны.
Цитата Zmei_2015 ( ) Да и там используется рекурсия. Мне вот она и не понятна. Проще рекурсии для алгоритмов сортировки ничего не бывает. С циклами тут проблем гораздо больше. Посмотрите про рекурсию в книжках Вирта.
Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
|
|
| |
Zmei_2015 | Дата: Пятница, 06 Мая 2016, 13:49 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| Цитата Gudleifr ( ) Символы - это тоже числа, только маленькие. Посмотрите внимательно, как хранятся строки в Вашей версии PASCAL. Преобразования же из символов в числа и обратно, для PASCAL, вроде, стандартны. Тогда другой вопрос. Вот в этом методе разъясняется мне понятно что делается с чётным количеством слов. Например:
А = asd abh ayr aui Тут всё просто. Разделяется на 2 строки. B = asd abh С = ayr aui
А что делать когда нечётное количество слов? Например: А = asd abh ayr aui art
Как они будут разбиваться?
|
|
| |
Gudleifr | Дата: Пятница, 06 Мая 2016, 13:58 | Сообщение # 6 |
почти ветеран
Сейчас нет на сайте
| Цитата Zmei_2015 ( ) Как они будут разбиваться? В вашем коде:
Код m:=m div 2; Sli(j,r,m); {Слияние "начал"} If j+r+m<=n Then Sli(j+m,r,m); {Слияние "концов"} Sli(j+m,r-m,m) End {Слияние в центральной части} Поставьте вместо Sli write и посмотрите, что получается.
Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
|
|
| |