Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/35: Рейтинг темы: голосов - 35, средняя оценка - 4.69
49 / 31 / 2
Регистрация: 14.02.2013
Сообщений: 677
1

Поиск максимального элемента в массиве методом "разделяй и властвуй"

19.02.2014, 00:02. Показов 6327. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я в недоумении, поиск максимального элемента в массиве сводится к цикличной проверке всех его элементов на предмет превышения значения одной переменной над значением другой, с последующей записью этого значения в последнюю переменную.
А задача стоит описать этот алгоритм с применением метода "разделяй и властвуй". Вот я и думаю, а что тут делить? Итак код в двух строчках.
На какие две "еще более простые задачи" можно разделить эту задачу?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2014, 00:02
Ответы с готовыми решениями:

Перевести код на C#: рекурсивный алгоритм нахождения максимального элемента массива методом "разделяй и властвуй"
Прошу подсобить с переводом кода на C#, т.к. по заданию вроде то, что мне нужно, а до конца его...

«Разделяй и властвуй». Поиск представителя большинства в массиве
Представителем большинства (majority element) в массиве A называется элемент, равные которому...

Найти индекс элемента в массиве методов "разделяй и властвуй"
На вход дается неотвортированный массив целых чисел. Необходимо найти индекс числа в массиве. ...

Возвести число A в степень N методом разделяй и властвуй
Возвести число A в степень N методом разделяй и властвуй Math.Pow(A,N) не предлагать!

Разделяй и властвуй, поиск пары ближайших точек
Задание: 1. Требуется реализовать алгоритм поиска пары ближайших точек в 2-мерном пространстве...

4
93 / 85 / 40
Регистрация: 06.02.2014
Сообщений: 122
19.02.2014, 00:27 2
Лучший ответ Сообщение было отмечено SrgKord как решение

Решение

Как вариант - разделить задачу на две задачи:
1) поиск максимума в первой половине массива
2) поиск максимума во второй половине массива
и сравнить найденное.
Метод применён)

Еще можно применить sqrt-декомпозицию, когда массив из N элементов разделяется на https://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt{N} частей, максимум каждой части просчитывается заранее и где-нибудь хранится. При изменении какого-нибудь элемента массива, перерассчитывается максимум соответствующей части массива, а максимум во всем массиве можно теперь искать всего за https://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt{N} операций.
1
49 / 31 / 2
Регистрация: 14.02.2013
Сообщений: 677
19.02.2014, 00:37  [ТС] 3
А ведь этот вариант у меня в голове неоднократно возникал, но я его отвергал, как слишком... плоский, что ли. Но тут, пожалуй, ни чего лучше и не сделаешь =)
0
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,037
20.02.2014, 13:45 4
Цитата Сообщение от SrgKord Посмотреть сообщение
Я в недоумении, поиск максимального элемента в массиве сводится к цикличной проверке всех его элементов на предмет превышения значения одной переменной над значением другой, с последующей записью этого значения в последнюю переменную.
А задача стоит описать этот алгоритм с применением метода "разделяй и властвуй". Вот я и думаю, а что тут делить? Итак код в двух строчках.
На какие две "еще более простые задачи" можно разделить эту задачу?
А этот массив случайно не обладает никакими свойствами ? Например, числа сначала возрастают, потом убывают, или еще какие свойства.
А то если это "обычный" массив с неизвестным поведением, то я не вижу как можно применить "разделяй и властвуй" с большим выигрышем.
Цитата Сообщение от Eldies Посмотреть сообщение
Еще можно применить sqrt-декомпозицию, когда массив из N элементов разделяется на https://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt{N} частей, максимум каждой части просчитывается заранее и где-нибудь хранится. При изменении какого-нибудь элемента массива, перерассчитывается максимум соответствующей части массива, а максимум во всем массиве можно теперь искать всего за https://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt{N} операций.
Я тут почеркал на листочке и посмотрел разные описания. Я вижу, что sqrt (и аналогичные) декомпозиции хороши при долговременной работе с массивом при операциях для однотипных результатов (сумма/максимум/минимум), но я не могу увидеть реальный выигрыш при использовании такого метода разово.

Вот, например, возьмем массив размера 81 и разобьем его на sqrt(81) = 9 частей
в каждой части мы для поиска локального максимума мы сделаем 8 сравнений и от 1 до 8 присваиваний
аналогичный цифры для поиска глобального максимума
Итого получаем 8*9+8 = 80 сравнений и от 10 до 80 присваиваний. Аналогичные цифры при прямом поиске.

Направь мой взор дабы узрел я истину.
1
93 / 85 / 40
Регистрация: 06.02.2014
Сообщений: 122
20.02.2014, 17:03 5
Цитата Сообщение от wingblack Посмотреть сообщение
Я тут почеркал на листочке и посмотрел разные описания. Я вижу, что sqrt (и аналогичные) декомпозиции хороши при долговременной работе с массивом при операциях для однотипных результатов (сумма/максимум/минимум), но я не могу увидеть реальный выигрыш при использовании такого метода разово.
При разовом поиске максимума никакого выигрыша действительно нет.
Не зная, какая конкретно задача у ТС, предложил sqrt-декомпозицию, как метод, который
1) является реализацией "разделяй и властвуй"
2) приводит к выигрышу на немаленьком классе задач
1
20.02.2014, 17:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2014, 17:03
Помогаю со студенческими работами здесь

Числа Фибоначчи методом "разделяй и властвуй"
Как найти числа Фибоначчи методом "разделяй и властвуй"?

Умножение матриц методом "разделяй и властвуй"
Помогите, очень срочно, надо написать программа для умножения матриц используя алгоритм "разделяй и...

Методом "разделяй и властвуй" посчитать задания
Тема больше не актуальна Всем привет, снова мучаюсь с задачей вот уже пару дней. Ввод: ...

Решение задачи методом "Разделяй и властвуй"
Помогите, пожалуйста, решить данную задачу методом "разделяй и властвуй" Var a,x,i,q,t,n:integer;...

Методом "разделяй и властвуй" построить башни
Всем привет, последняя задачу которую нужно решить) Есть бесконечное количество блоков размера...

Вычислить Фибоначчи методом "разделяй и властвуй"
почему я не могу найти этот алгоритм? это варианты с бине и восходящим динамическим ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru