powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Метод полного перебора элементов массива
22 сообщений из 22, страница 1 из 1
Метод полного перебора элементов массива
    #36325835
sheeona
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. Подскажите, плиз, алгоритм или метод полного перебора элементов массива int.
Нужно для задачи. Подробнее: массив "0,1,2,3,4,5,6,7,8,9". Задача, конечно, решается более эффективным способом, но нужен именно этот. Заранее спасибо.
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #36325869
Lion HC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
for_each(first,last,function)
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #36325998
sheeona
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lion HC,
не так понял вопрос. Надо не ходить по массиву от первого до последнего элемента, а менять элементы в массиве. Например: 0123456789, 0123456798, 0123456879, .... , 9876543210. Как можно это реализовать?
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #36326003
Микросекунда
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
здесь

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #36326094
Фотография Гусар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
половина тем от студентов троишников (двоишники просто тупо все покупают)
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #36326386
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Куда мир катится?
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #36366150
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 sheeona:
Хотите перебрать все перестановки (permutations) массива?
std::prev_permutation
std::next_permutation
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Метод полного перебора элементов массива
    #39087501
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
next_permutation и prev_permutation удобны, и хорошо что они есть(сам их использовал не так давно). Но опять возникает такой вопрос: как много времени могут выполняться данные функции ? Стандарт ничего не говорит (и судя по всему не должен), это не очень хорошо
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #39087502
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SSудобны
Когда число элементов не более 12 (Кнут в первом издании говорит о 10, но это было больше 30 лет назад)
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #39087555
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercurynext_permutation и prev_permutation удобны, и хорошо что они есть(сам их использовал не так давно). Но опять возникает такой вопрос: как много времени могут выполняться данные функции ? Стандарт ничего не говорит (и судя по всему не должен), это не очень хорошо

авторComplexity
Up to linear in half the distance between first and last (in terms of actual swaps).

Я смотрю, в примере несколько циклических сдвигов произошло. Вероятно, алгоритм на циклических сдвигах построен. Поэтому в каждой итерации перестановок может быть столько, сколько элементов в массиве или меньше.
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #39087571
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab,

подумал вы это из стандарта взяли, ещё раз посмотрел, и оказывается я вас обманул. В стандарте указано следующее:
ISO/IEC N3242=11-0012Complexity: At most (last-most)/2 swaps.
Хотя бы что-то есть.
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #39087590
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab Я смотрю, в примере несколько циклических сдвигов произошло. Вероятно, алгоритм на циклических сдвигах построен. Поэтому в каждой итерации перестановок может быть столько, сколько элементов в массиве или меньше.

Видные информатики, Кнут, Скиена говорят о том, что достаточно часто программисты неверно понимают и, самое главное, используют, асимптотические обозначения, и . В стандарте написано "at most". Что это значит ? Не больше ? То есть это оценка сверху ? Либо это значит в большинстве случаев ? Мне кажется что понимать следует так. Хочется чтобы стандарт был более строг в этом отношении.

Думаю что скорее всего использовали перебор с возвратом
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #39087624
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю там алгоритм перестановки такой: берем последний элемент, последовательно сравниваем с предыдущими пока не найдем меньший. Нашли - меняем их местами, сортируем по возрастанию все что после места замены. Не нашли - берем предпоследний и т.д.
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #39087634
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryв большинстве случаев чьих случаев? моих или твоих или автора? тут распределение не задано, поэтому о статистике случаев нет смысла говорить. если иное не указано, нужно понимать "худший" случай.

для перебора с возвратом наверное стек нужен, а тут стека вроде как нет.
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #39087683
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabSashaMercuryв большинстве случаев чьих случаев? моих или твоих или автора? тут распределение не задано, поэтому о статистике случаев нет смысла говорить. если иное не указано, нужно понимать "худший" случай.

для перебора с возвратом наверное стек нужен, а тут стека вроде как нет.

есть тут стек или нет вы не знаете, как и я. На то она и инкапсуляция. Но я уверен что циклический сдвиг в данном алгоритме совершенно ни причём :)

А под 'случаем' тут понимается исходная перестановка. Если вы не согласны с моей трактовкой того что написано в стандарте, предложите свою версию ;)
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #39087715
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно просто взять и померить время на массивах разного размера. Посчитать в теле цикла кол-во итераций и вывести время одного вызова. Затем сложность оценить.
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #39087984
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TМожно просто взять и померить время на массивах разного размера. Посчитать в теле цикла кол-во итераций и вывести время одного вызова. Затем сложность оценить. Это совсем не просто. Время зависит от порядка.
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #39087993
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryА под 'случаем' тут понимается исходная перестановка. Если вы не согласны с моей трактовкой того что написано в стандарте, предложите свою версию ;) "At most bla-bla-bla", означает не хуже чем bla-bla-bla для всякого исходного порядка, а не для какого то усредненного. Оно и понятно, в одних задачах могут встречаться только "хорошие" порядки для которых и делать ничего не надо, один swap и готово, в других только "плохие" порядки, где надо двигать весь массив.
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #39088415
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саш, просвяти зачем тебе сложность данного алгоритма? массив из N элементов может быть переставлен N! раз. Т.е. больше 12-13 элементов это много комбинаций, но при этом сама перестановка будет быстра. Какая может быть задача чтобы потребовалось частично переставлять элементы в массиве например из 100-1000 элементов? Все 1000! вариантов точно не перебрать за разумное время.
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #39088429
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется что ее (std::next_permutation) можно как-то улучшить введя состояние.
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #39088543
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabSashaMercuryА под 'случаем' тут понимается исходная перестановка. Если вы не согласны с моей трактовкой того что написано в стандарте, предложите свою версию ;) "At most bla-bla-bla", означает не хуже чем bla-bla-bla для всякого исходного порядка, а не для какого то усредненного.

Тут вы сами себе противоречите

mcureenab Оно и понятно, в одних задачах могут встречаться только "хорошие" порядки для которых и делать ничего не надо, один swap и готово, в других только "плохие" порядки, где надо двигать весь массив.
...
Рейтинг: 0 / 0
Метод полного перебора элементов массива
    #39088544
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TСаш, просвяти зачем тебе сложность данного алгоритма? массив из N элементов может быть переставлен N! раз. Т.е. больше 12-13 элементов это много комбинаций, но при этом сама перестановка будет быстра. Какая может быть задача чтобы потребовалось частично переставлять элементы в массиве например из 100-1000 элементов? Все 1000! вариантов точно не перебрать за разумное время.

Было интересно, потому спросил
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Метод полного перебора элементов массива
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]