|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Alexey Desyatnik 2:5020/400 08 Oct 2002 20:26:22 To : Alexander Pashchenko Subject : Re: Алгоритм --------------------------------------------------------------------------------
Alexander Pashchenko пишет:
> Задали тут задачку:
>
> Дан массив A[m,n] Известно, что среди его эл-тов
> всего 2 равны между собой. Hапечатать их индесксы.
>
> Как ее правильно решить.
>
> Я так думаю, что надо проходить по матрице и сравнивать текущий элемент с
> запомненным, исключая сам запомненный. И если они равны вывести индексы.
> Hо вот тут-то я и запутался.
Вопреки предлагаемому массив сортировать HЕ надо.
Почему? При неотсортированном массиве алгоритм очевиден -
перебор с ограничением (в худшем случае будем сравнивать
каждый элемент с каждым). Сложность алгоритма О((m*n)^2).
Теперь рассмотрим сортировку - неважно какой алгоритм.
Линейного-то все равно не существует, в лучшем случае
O(n*log(n)). Сортировать придется каждую строку (или
столбец), т.е. для всей матрицы поимеем сложность уже
O(m*n*log(n)) (или, соотв., O(n*m*log(m))). Далее,
рассмотрим худший случай, например (после сортировки):
1 2 3 4
5 6 7 8
9 10 11 11
Каждую строку надо просмотреть на наличие двух соседних
элементов (т.е. сложность поднимается _еще_ на m*n,
имеем в результате _уже_ сложнее полного перебора)
кроме того, надо учесть и возможности вроде
1 2 3 4
5 6 7 8
4 9 10 11
Дальше, думаю, рассматривать не стоит... :)
Сортировка (и тем более хэши) имеют смысл при
структурах и задачах баз данных, но никак не
числовых матриц (тем более, как я подозреваю,
повторный поиск производиться не будет :)
WBR, AD (desyatnik@dax.ru)
--
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
--- ifmail v.2.15dev5
* Origin: Talk.Mail.Ru (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/151681ce7369.html, оценка из 5, голосов 10
|