Re: Сортировка

From
Evgenij Masherov (2:5020/175.2)
To
Andrey Belyakov
Date
2002-04-30T14:19:08Z
Area
RU.ALGORITHMS
Tue Apr 30 2002 14:21, Andrey Belyakov wrote to Evgenij Masherov:

>>  >>  AB> Да элементарно. На каком-нибудь из шагов потребуется обменять
 >>  >>  AB> строки длиной 5 и 6 символов. Тому, кто сможет это сделать не
 >>  >>  AB> привлекая дополнительных ресурсов можно ставить памятник...
 >>  >>
 >>  >> Попрошу на родине Героя.
 >>  >> Дан массив строк. Т.е. массив указателей на начало строки. Обмен

 AB> местами

 >>  >> значений указателя не зависит от длины указуемых строк.
 >> 
 >>  AB> Подмена задачи не есть ее решение.
 >> 
 >> Пардон, где подмена?
 >> 
 >> MSTR:array[0..N] of string;
 >>  - массив строк?
 >> ИМХО он самый...

 AB> В Паскале? ;)  Нормально массив может лежать где-нибудь на внешнем
 AB> носителе, что, однако, на сам процесс сортировки не должно влиять...

 >> То, что у Вас приведено - никак не массив строк, а строка, в которую
 >> искусственным образом впихнуты несколько строк, разделенных нулевыми
 >> символами. Вот это - подмена задачи.
 >> Массив - совокупность величин одного типа, допускаящая обращение к
 >> каждой из них указанием индекса элемента массива.

 AB> О'key - уговорили. Цель постановки такой задачи не затруднит объяснить?

1. Ну так бюст возводится? :) Ждем-с...

2. Любая прикладная задача с сортировкой, скажем, фамилий или названий книг,
скорее будет предполагать выделение массива типа строка, а не создание длинной
строки с разделителями внутри...

3. Впрочем, возьмем Вашу постановку. Дана длинная строка на внешнем носителе.
С разделителями внутри. Необходимо ея отсортировать. Ну и почему здесь
неприменима разделяющая сортировка? Внешняя память нуждается в экономии?
Первый проход: из одного входного файла делаем два, поочередно выбрасывая в
1-й и 2-й последовательные строки.
Последующие проходы:
Сливаем эти файлы обычным образом (кстати, лексикографическое сравнение
получаеися само собой...), поочередно выбрасывая в два других. И так до
полного удовлетворения. O(NlnN)
Весьма практичная постановка.

Евгений Машеров АКА СанитарЖеня

--- ifmail v.2.15dev5
 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)