![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| lmaforl |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 7.1.2011 Репутация: нет Всего: нет |
Добрый вечер, всех с прошедшими праздниками. Может кто-нибудь подсказать (по возможности помочь реализовать) алгоритм проверки устойчивости алгоритма сортировки. Имеется набор сортировок (а именно 8 штук) и мне нужно каждую сортировку проверить на устойчивость. Т.е. надо придумать такую функцию, которая подавала сортировке на вход файл с элементами, а после их сортировки выводилось сообщение, является ли данная сортировка устойчивой или нет. Заранее благодарю за помощь.
|
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
что такое "устойчивость алгоритма сортировки"?
|
|||
|
||||
| lmaforl |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 7.1.2011 Репутация: нет Всего: нет |
Устойчивая (стабильная) сортировка — сортировка, которая не меняет относительный порядок сортируемых элементов, имеющих одинаковые ключи.
допустим дана последовательность: 1а 1в 1с резултат сортировки: 1) устойчивая 1а 1в 1с 2) неустойчивая 1в 1с 1а (например) |
|||
|
||||
| Jimy |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 4.7.2010 Репутация: нет Всего: 3 |
Все стандартные методы сортировки уже определены по признаку устойчивости. Какой смысл это тестировать?
Сделать проверку данных можно конечно, сложности не вижу. Могу помочь если есть конкретные вопросы. |
|||
|
||||
| lmaforl |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 7.1.2011 Репутация: нет Всего: нет |
Просто я работаю над задачей сравнения и описания различных видов сортировок. Вот мне и нужно неким скриптом лично доказать устойчивость/неустойчивость того или иного алгоритма сортировки.
"Сделать проверку данных можно конечно, сложности не вижу. " В каком смысле проверка данных? |
|||
|
||||
| Jimy |
|
||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 4.7.2010 Репутация: нет Всего: 3 |
Задача не сложная.
Каждый сортируемый элемент можно поместить в хэш и добавить ключ со значением его позиции в исходном наборе. Например, так:
где value - то что сортируем pos - позиция этого элемента в исходном наборе. И для всего исходного набора данных составить массив ссылок на хэши. Будет что-то типа
Затем, выполнив сортировку данного массива нужным алгоритмом по ключам 'value', проверить, если для одинаковых элементов значение pos всегда возрастает, то сортировка устойчивая, иначе - неустойчивая (нестабильная):
Однако, данная проверка может не выявить нестабильную сортировку на некоторых, неудачно подобранных, исходных данных. Т.е. нужно брать объем исходных данных побольше, и чтобы повторяющихся значений тоже было в достатке разбросано по всему объему. Добавлено через 3 минуты и 24 секунды напутал со знаком сравнения позиции элемента. нужно ">" заменить на "<" и закрывающая круглая скобка пропущена, вот правильно:
|
||||||||
|
|||||||||
| lmaforl |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 7.1.2011 Репутация: нет Всего: нет |
Jimy
Большое спасибо! Попробую реализовать Один только вопрос, а что можно сказать о встроенной сортировки sort? Кроме того что она работает довольно таки очень быстро. |
|||
|
||||
| Jimy |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 4.7.2010 Репутация: нет Всего: 3 |
Реализация встроенной сортировки sort отличается в разных версиях perl.
http://search.cpan.org/~jesse/perl-5.12.2/lib/sort.pm |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |