Re[3]: Алгоритм
От: Кодт Россия  
Дата: 18.01.06 13:58
Оценка: +1
Здравствуйте, sprsrpsh, Вы писали:

S>Спасибо, только не понимаю, почему мой алгоритм имеет сложность O(n*n), выбор минимума производится n раз за log(n) времени, используется выбор минимума методом дерева. Вроде O(n*log(n)). А насчёт деревьев, в интернете есть описание всех этих функций и алгоритмов? Я в Borland C++ 3.2 работаю, буду сам всё реализовывать.


Где же там "метод дерева"?
У тебя неупорядоченный массив. Ты его разбиваешь примерно пополам, в каждой из половинок рекурсивно ищешь минимум, а затем берёшь минимум из двух результатов.
Теперь внимание, вопрос: сколько всего элементов массива ты читаешь? Ответ: все!!!
Да, глубина рекурсии — логарифм. Так ведь просто сканирование массива имеет глубину 1.

S>А насчёт перестановки мест слагаемых, там результатом не будет сумма всех элементов, кто не верит — пусть подумает на досуге, почему. Если бы всё было так просто!


Ну я предположил, что это была ошибка в условии. Потому что есть очень похожая практическая задача — суммирование по Хаффману. А какой смысл у твоей задачи?

И тем не менее, решение с использованием пирамиды остаётся в силе.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.