powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Подскажите алогоритм, литературу по решению данной задачи
25 сообщений из 64, страница 1 из 3
Подскажите алогоритм, литературу по решению данной задачи
    #37410951
romapost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подскажите какой лучше всего алгоритм использовать для решения данной задачи, и желательно литературу

Дан массив произвольного размера с числами в пределах от 1 до 1,000,000. В этом массиве все числа уникальные, кроме одного числа, которое повторяется два раза. Найти это число. Решить эту задачу с минимальным использованием процессорного времени.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37410984
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
select i from
(
select i, count(i) n from table1 group by i
)
where n>1


это если лень думать :)
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37410987
Гата Селов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сложить все числа. Потом из полученной суммы вычесть сумму всех чисел от 1 до n. В остатке будет повторяющееся число. Сумму чисел от 1 до эн наити по формуле из школьного учебника.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37410990
Гата Селов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это если значения не превосходят размерности массива
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411001
Фотография DENIS_CHEL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если говорить об алгоритме без sql, то я бы предложил следующее:

0) Отсортировать исходный массив.
1) Совершить по отсортированному массиву 1 проход, сравнивая соседние числа между собой...
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411010
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 25.08.2011 10:16, romapost wrote:

> *Дан массив произвольного размера с числами в пределах от 1 до 1,000,000. В этом
> массиве все числа уникальные, кроме одного числа, которое повторяется два раза.

На счёт вот "повторяется два раза" -- это как вообще ? Сколько в итоге
экземпляров этого числа в массиве -- два или четыре ? или даже может быть три ?

Товарищь, который формулировал задание, был хитрый.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411014
romapost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем за наводку!

Интересует прежде всего вариант без sql, название метода, и что почитать , я думаю значения могут превышать размерность массива.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411021
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 25.08.2011 10:46, DENIS_CHEL wrote:

> 0) Отсортировать исходный массив.
> 1) Совершить по отсортированному массиву 1 проход, сравнивая соседние числа
> между собой...

Это долго. Это O( (N log N) + N ) как минимум.
Я по крайней мере знаю один способ быстрее это сделать, за O( N ).
Но может кто-то ещё что-то придумает.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411022
Фотография DENIS_CHEL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivСколько в итоге
экземпляров этого числа в массиве -- два или четыре ? или даже может быть три ?

Товарищь, который формулировал задание, был хитрый.


И мое решение и Еноза это корректно отработает... Вопрос в том будет ли это верным ответом на вопрос...

PS Не люблю задачи типа "Докажите что..."
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411032
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 25.08.2011 10:53, DENIS_CHEL wrote:

> И мое решение и Еноза это корректно отработает... Вопрос в том будет ли это
> верным ответом на вопрос...

Твоё решение -- вообще никакое, это долго. Хотя конечно решение.
Еноза решение -- не решение вообще. Загружать миллион записей в таблицу БД
только чтобы понять, какое число повторяется -- это бред. Даже твоё решение лучше.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411036
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
DENIS_CHELЕсли говорить об алгоритме без sql, то я бы предложил следующее:

0) Отсортировать исходный массив.
1) Совершить по отсортированному массиву 1 проход, сравнивая соседние числа между собой... ограничения только по использованию процессора, а не по памяти.
так что проще:
1) создать второй массив [1..1000000] и в него закидывать элементы первого по индексам.
если перед присваиванием не ноль, значит это и есть искомое неуникальное число.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411038
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
MasterZivЕноза решение -- не решение вообще. Загружать миллион записей в таблицу БД
только чтобы понять, какое число повторяется -- это бред. про виртуальные талицы слышал?
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411042
Фотография DENIS_CHEL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eNoseDENIS_CHELЕсли говорить об алгоритме без sql, то я бы предложил следующее:

0) Отсортировать исходный массив.
1) Совершить по отсортированному массиву 1 проход, сравнивая соседние числа между собой... ограничения только по использованию процессора, а не по памяти.
так что проще:
1) создать второй массив [1..1000000] и в него закидывать элементы первого по индексам.
если перед присваиванием не ноль, значит это и есть искомое неуникальное число.

Я над этим думал - сортировка подсчетом, но вся прелесть, что нам не надо сортировать до конца:)

Но есть один момент создать массив в 1 000 000 обнулить его то же затратно, в исходной задаче сказано "массив произвольного размера", сортировка 3-х чисел будет быстрее:)
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411043
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DENIS_CHELЕсли говорить об алгоритме без sql, то я бы предложил следующее:

0) Отсортировать исходный массив.
1) Совершить по отсортированному массиву 1 проход, сравнивая соседние числа между собой...
O(n*ln(n)). Хотя, на самом деле, любое решение будет O(n*ln(n)).

Числа, укладывающиеся в 20 бит. Ограничение на время процессора, но не на память. Хм.
Заводим служебный массив в 2 Mb, инициализируем нулями. Для каждого числа в массиве, если соответствующая ячейка служебного массива ноль, пишем один; если была единица - ура, мы нашли клиента.
Ничего быстрее мне в голову не приходит.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411049
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DENIS_CHELНо есть один момент создать массив в 1 000 000 обнулить его то же затратно, в исходной задаче сказано "массив произвольного размера", сортировка 3-х чисел будет быстрее:)
Можно добавить ветку для малых n. Одна проверка погоды не сделает.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411050
Фотография DENIS_CHEL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AbstractionЧисла, укладывающиеся в 20 бит. Ограничение на время процессора, но не на память. Хм.
Заводим служебный массив в 2 Mb, инициализируем нулями. Для каждого числа в массиве, если соответствующая ячейка служебного массива ноль, пишем один; если была единица - ура, мы нашли клиента.
Ничего быстрее мне в голову не приходит.

Это и есть сортировка подсчетом, выше уже предлагали...
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411055
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
DENIS_CHELНо есть один момент создать массив в 1 000 000 обнулить его то же затратно да, тут даже биты не спасут... 125 тысяч элементов...
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411270
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eNoseDENIS_CHELНо есть один момент создать массив в 1 000 000 обнулить его то же затратно да, тут даже биты не спасут... 125 тысяч элементов...125000 байт?
копейки, отработает за доли секунды.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411314
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Яростный МечeNoseпропущено...
да, тут даже биты не спасут... 125 тысяч элементов...125000 байт?
копейки, отработает за доли секунды. мож есть менее затратный для проца вариант?
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411339
GrasQtR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
romapost,

Может связный список?
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411360
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eNose,

Вообще-то, есть System Idle, благодаря которому мы имеем шанс сразу получить обнулённые страницы.

Можно попробовать опереться на другие сортировки. Скажем, поразрядная потребует выделения 64-кратного объёма исходного массива без обнуления и поиск дубликата потребует довести сортировку в среднем до половины, но на таком мелком массиве это не окупается.
Шелл позволит теоретически найти дубликат на больших списках (а Хоар, соответственно, обнаружить равенство разделяющему элементу), но вероятность этого меньше 1/2.

Исходный массив обладает тем свойством, что его элементы не нули и XOR любой пары элементов кроме искомых не ноль. Интересно, можно ли за это зацепиться?
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411361
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrasQtRМожет связный список?
А нафига?
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411367
Фотография DENIS_CHEL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrasQtRromapost,

Может связный список?

Городить этот огород еще хуже сортировки...
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411382
Panshin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это очень просто без всякого алгоритма, если подумать. Если число одно и повторяется только один раз, то сложи числа от 1 до миллиона, потом сложи данную последовательность чисел и от второго отними первое. Получишь число, которое повторилось.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411389
GrasQtR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PanshinЭто очень просто без всякого алгоритма, если подумать. Если число одно и повторяется только один раз, то сложи числа от 1 до миллиона, потом сложи данную последовательность чисел и от второго отними первое. Получишь число, которое повторилось.

В задаче написано: массив произвольного размера, не сказано что числа будут идти строго по порядку.
...
Рейтинг: 0 / 0
25 сообщений из 64, страница 1 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Подскажите алогоритм, литературу по решению данной задачи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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