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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2010, 22:49   #1
BarsRus
Новичок
Джуниор
 
Регистрация: 02.06.2010
Сообщений: 1
По умолчанию Алгоритм сортировки

есть множество обьектов скажем например штук 1000
есть некая функция которая сортирует 10-ь обьектов по спаду.

Нужно раставить обьекты в множестве по мере спада.

решение есть:
1.берем первые 10, определяем какой из них последний
2. на его место ставим 11 элемент и опять определяем последний обьект ..
3. повторяем пункт 2 пока не дойдем до конца
так мы определим первый обьект.. откидываем его, а с оставшимися обьектами проводим все по пунктам 1,2,3..
Те элементы что откидывали образуют отсортированное множество.
При таком алгоритме количество обращений к функции сортировки ~1милион

Подскажите пожалуйста алгоритм при котором число обращений к функции сортировки было минимальным.
BarsRus вне форума Ответить с цитированием
Старый 03.06.2010, 10:03   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

А нельзя сделать функцию которая вместо 10 элементов сортирует их произвольное количество. Тогда обращение к функции будет всего 1 раз .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 03.06.2010, 13:58   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
2. на его место ставим 11 элемент и опять определяем последний обьект ..
сортируем (1..10)
сортирум(10..19) максимальный с предыдущего шага и девять новых
сортируем(19..28)
..
за m/9 шагов знаем последний

возвращаемся к началу итого результат N *(N/9) шагов

смотрим (1..10). уже отсортировано (1..8) (9..10) поэтому начинаем
сортируем (8..17) (17..26)(26..35)...
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 03.06.2010, 16:11   #4
Snejnaya
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 219
По умолчанию

Может быть поможет: сортировка методом "пузырька"

1)сравниваем первый объект и второй, если второй больше, меняем их местами
2)сравниваем первый (текущий) и третий, если третий больше. меняем их местами
и т.д., потом
3)сравниваем второй и третий, если третий больше - меняем местами
до тех пор,пока не сравним 9 и 10 объекты.
Получаем отсортированные по спаду 10 элементов.

В итоге мы на каждом шаге выбираем максимальное из двух значений. а не из 10. Всего операций сравнения для сортировки 10 объектов 45
Snejnaya вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм сортировки строк в Memo Toha_88 Помощь студентам 4 29.04.2010 14:20
алгоритм сортировки «вставкой» curly182 Помощь студентам 2 19.10.2009 22:56
Алгоритм сортировки по категориям retail_ret PHP 8 11.08.2009 00:06
Алгоритм сортировки одномерного массива JOFRIF Общие вопросы C/C++ 4 19.07.2009 17:23