Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2007, 17:18   #1
sad8c
 
Регистрация: 13.12.2007
Сообщений: 6
По умолчанию поиск кратчайшей сортировки, с минимальным кол-вом перестановок

Задача: найти комбинацию из минимального количества перестановок, необходимых для упорядочиивания некоторой числовой последовательности. За отсутствием какого оибо опыта в решении подобных задач я сначала пошел как оказалось окольными и никуда не ведущими путями: разбиваю массив на подмассивы из уже упорядоченных элементов, т.е. подпоследовательностей, "внутрь" которых ниче вставлять уже не придется. далее сортирую полученное по первому элементу подпоследовательности методом выбора. Какбы работает, но далеко не во всех случаях(((
Если ктонибудь уже сталкивался с этой задачей или знает существующие методы решения - буду очень благодарен за помощь.
sad8c вне форума Ответить с цитированием
Старый 13.12.2007, 17:40   #2
kommunist
C# developer
Форумчанин
 
Аватар для kommunist
 
Регистрация: 03.10.2007
Сообщений: 393
По умолчанию

Так тебе сортировка массива нужна? Каким методом?
I like WPF
kommunist вне форума Ответить с цитированием
Старый 13.12.2007, 17:52   #3
sad8c
 
Регистрация: 13.12.2007
Сообщений: 6
По умолчанию

язык реализации - Java. а насчет метода сортировки - тут немного не та задача. попробую сформулировать проще - мне нужно минимальным количеством перемещений элементов последовательности упорядочить эту последовательность. например:
4 1 2 3

1 перемещение: 4 в конец.

если к примеру это делать методом простого выбора, будет 3 перемещения(поочереди 1,2,3).

поэтому я и разбиваю массив на уже упорядоченные группы. в данном случае:
4
1 2 3

и эти группы уже сортирую выбором. т.е. теперь, я нахожу минимальный элемент при первой итэреции - это 1. зная что 1 в группе с 2 и3, и что 4, ктороая стоит на месте 1 - "одинока", а значит "легче", перемещаю на правильную позицию 4. и так иду по всему массиву, совершая необходимые перестановки с учетом "веса" элементов. но это как оказалось не всегда работает. поэтому я ищу уже существующий алгоритм сортировки минимальным количеством перестановок...
sad8c вне форума Ответить с цитированием
Старый 13.12.2007, 18:06   #4
kommunist
C# developer
Форумчанин
 
Аватар для kommunist
 
Регистрация: 03.10.2007
Сообщений: 393
По умолчанию

Посмотри это может чем нибудь-поможет
Вложения
Тип файла: doc java.doc (29.0 Кб, 17 просмотров)
I like WPF
kommunist вне форума Ответить с цитированием
Старый 13.12.2007, 18:16   #5
sad8c
 
Регистрация: 13.12.2007
Сообщений: 6
По умолчанию

спасибо большое, но к сожалению это не то(((
sad8c вне форума Ответить с цитированием
Старый 13.12.2007, 18:17   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
я ищу уже существующий алгоритм сортировки минимальным количеством перестановок
Например, "метод быстрой сортировки" C.A.R. Noare.
Для вашего примера - будет 2 перестановки (при правильном выборе компаранда).

Последний раз редактировалось mihali4; 13.12.2007 в 18:19.
mihali4 вне форума Ответить с цитированием
Старый 13.12.2007, 18:23   #7
sad8c
 
Регистрация: 13.12.2007
Сообщений: 6
По умолчанию

Цитата:
Для вашего примера - будет 2 перестановки
но ведь в моем примере минимальное кол-во перестановок - ОДНА!
sad8c вне форума Ответить с цитированием
Старый 13.12.2007, 18:33   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от sad8c Посмотреть сообщение
но ведь в моем примере минимальное кол-во перестановок - ОДНА!
Так ведь и вы - не компьютер, а человек!
Раз вы "знаете", как сделать любую сортировку за минимальное количество ходов, научите этому ваш компьютер.
Рекомендую сначала почитать про методы сортировок, их придумали далеко не глупые люди... Все, как один - выдающиеся математики.
Вам это ни о чем не говорит?
Ни один метод сортировки не является абсолютно универсальным. Для одного массива данных оптимальным может оказаться метод Шелла, а для другого - может быть даже и "пузырьки"...
К тому же параметры любого метода не исчерпываются только "количеством перестановок". Не менее важно и количество предваряющих их сравнений, не так ли?

Последний раз редактировалось mihali4; 13.12.2007 в 18:57.
mihali4 вне форума Ответить с цитированием
Старый 13.12.2007, 18:37   #9
sad8c
 
Регистрация: 13.12.2007
Сообщений: 6
По умолчанию

так ведь и не я придумал эту задачу) и я почти уверен в том, что один из выдающихся математиков когдато придумал и её решение. разумеется скорость выполнения данной сортировки - ниже известных методов. но ведь и цель - не просто как можно быстрее отсортировать - а наглядно продемонстрировать, какие нужно совершить манипуляции, чтобы отсортировать ряд быстрее всего....
sad8c вне форума Ответить с цитированием
Старый 14.12.2007, 10:23   #10
sad8c
 
Регистрация: 13.12.2007
Сообщений: 6
По умолчанию

всем спасибо огромное! ответ на вопрос нашел на другом форуме:
Цитата:
В таком случае основой алгоритма должен стать поиск длиннейшей последовательности упорядоченных элементов без учета выпадающих из порядка промежуточных элементов.
Поясню примером. Скажем есть у нас последовательность элементов 153264. Какие есть упорядоченные последовательности?
124
126
134
136
14
156
16
24
26
34
36
56
Берем за основу любую из длиннейших, и начинаем перемещать не входящие в нее на соответствующие места. При этом куда именно помещать - пофиг, скажем, если начать с 134, то 2 можно поместить как перед, так и после 6. Не влияет.
sad8c вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод сортировки MaXiS Общие вопросы Delphi 5 19.05.2008 08:48
в двухмерном массиве поменять местами столбцы с максимальным и минимальным элементами Лёха Помощь студентам 5 18.12.2007 18:12
Сортировки в БД. Шурик БД в Delphi 4 15.05.2007 17:45