powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Подскажите алогоритм, литературу по решению данной задачи
64 сообщений из 64, показаны все 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
Подскажите алогоритм, литературу по решению данной задачи
    #37411390
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Panshin,

Кто-то сказал, что число 36 253 в этой последовательности есть?
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411398
Фотография DENIS_CHEL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PanshinЭто очень просто без всякого алгоритма, если подумать. Если число одно и повторяется только один раз, то сложи числа от 1 до миллиона, потом сложи данную последовательность чисел и от второго отними первое. Получишь число, которое повторилось.

Если в исходном массиве числа 1,2,2 то какой результат вы получите?
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411409
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Требуется указать число, либо его индекс в некотором массиве. Возможных индексов - n, чисел - 1000000.
Если отсортировать массив (O(n*ln(n))), то проверка каждого индекса на правильность - O(1).

Каким свойством вместо монотонности может обладать массив, чтобы наличие дубликатов элемента по заданному индексу проверялось за O(1)?
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411435
Panshin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DENIS_CHEL,
Понятное дело я указал на частный случай. Можно обобщить.

Сложим все числа последовательности
1,2,2 = 5
Следовательно максимальное число в последовательности будет не более 5.
Далее найдем максимальное число в последовательности и вычтем его из суммы, при этом удалим его из последовательности.
Выполнив таким образом m-1 шагов, где m - количество элементов в последовательности мы найдем парное число так как оно будет дважды появляться в нахождении максимума урезаемой последовательности.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411445
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Panshin,

получится О(N 2 )
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411450
Фотография DENIS_CHEL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Panshin

На каждой итерации мы осуществляем поиск максимума...

Будет ли в общем случае выигрыш по сравнению с сортировкой?:)
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411453
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
а с адресацией ничего нельзя замутить?
ну там проверять память по адресу == числу в массиве и если не какое-то значение, значит менять.
если значение уже есть, то значит нашли.


хотя это ничем от массива не отличается...
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411460
Nitica
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
romapost,

#define ARRAY_DIMENSION 1000000

//исходный массив с числами
int [ARRAY_DIMENSION] iArr;

bool *boolArr = new bool[ARRAY_DIMENSION]; // по умолчанию заполнено нулями, то есть false

for (int ind = 0; ind < ARRAY_DIMENSION; i++)
{
if (boolArr [iArr[ind] - 1] )
{
//мы нашли это число
return iArr[ind];
}
else
{
boolArr [iArr[ind] - 1] = true;
}
}
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411494
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitica,

Бедный процессор.
И вообще, если массив "по умолчанию" заполнен нулями, то, позвольте спросить, кто его заполнил?
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411496
Фотография DENIS_CHEL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исходный массив с числами произвольной длины... Но не больше 1 000 000.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411508
JoFan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока приходит на ум какая нибудь быстрая сортировка, где в операции сравнения и будем проверять на равенство
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411518
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DENIS_CHELИсходный массив с числами произвольной длины... Но не больше 1 000 000.
1 000 001 ;)
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411536
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JoFanПока приходит на ум какая нибудь быстрая сортировка, где в операции сравнения и будем проверять на равенство
Быстрые сортировки потому и быстрые, что сравнивают друг с другом не все n(n-1)/2 пар.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411546
Nitica
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abstraction,
Бедный процессор.

то есть сортировка, по Вашему мнению, менее затратна, чем просто один пробег по массиву. Указатели - самое менее затратное средство в вычислениях как ни крути :)

И вообще, если массив "по умолчанию" заполнен нулями, то, позвольте спросить, кто его заполнил?

это псевдо-код :) в Visual C, например, точно будут нулики
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411600
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NiticaAbstraction,
Бедный процессор.

то есть сортировка, по Вашему мнению, менее затратна, чем просто один пробег по массиву. Указатели - самое менее затратное средство в вычислениях как ни крути :)

И вообще, если массив "по умолчанию" заполнен нулями, то, позвольте спросить, кто его заполнил?

это псевдо-код :) в Visual C, например, точно будут нулики
Массив в 500 элементов, а мы отжираем 2 Mb. Спорный выигрыш.

Visual C++ 6.0, насколько помню, выделяемую такой конструкцией память не обнуляет. Для примера. В любом случае, если мы не надеемся на то, что у системы завалялись обнулённые страницы, это придётся делать нашему процессу, увы.


А если танцевать от хэш-таблицы? Функция h(x)=x%n, получаем n классов (некоторые из которых, возможно, пустые), оба дубликата в одном классе; время создания - O(n), среднее время проверки одного класса - O(1). Правда, при этом совершенно не используем ограниченность спектра значений.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411611
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
AbstractionМассив в 500 элементов, а мы отжираем 2 Mb. Спорный выигрыш. при иницилизации массива ничего физически не выделяется.
а вот когда начинаем обнулять, да...
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411637
Nitica
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abstraction,

Массив в 500 элементов, а мы отжираем 2 Mb. Спорный выигрыш.

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

Массив в 500 элементов, а мы отжираем 2 Mb. Спорный выигрыш.

в формулировке задачи вроде как ясно сказано, что ограничений по памяти нет.
Ограничений нет. Но эти 500 1250 страниц кому-то надо выделить, а потом эти полмиллиона миллион с хвостиком машинных слов кому-то обнулить.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411648
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
AbstractioneNoseпри иницилизации массива ничего физически не выделяется.
Я что-то пропустил?
После инициализации мы имеем адрес начала области памяти, к которой можно обращаться. Откуда она берётся, в таком случае? вот когда начнешь обращаться, тогда и выделяться будет.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411653
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Abstraction,

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

Ограничений нет. Но эти 500 1250 страниц кому-то надо выделить, а потом эти полмиллиона миллион с хвостиком машинных слов кому-то обнулить.

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

Проверил на C#, проверил на C++.
Я прав ;)
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411803
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
AbstractioneNose,

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

Где ж я вам его возьму?
Но вообще, идея выделять память только при обращении к ней подразумевает, что мы обращаемся не напрямую к памяти, а вызываем некоторый метод, который вначале проверяет, выделили ли нам эту память. Что выливается в потерю производительности.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411861
Петрович-64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сложи все числа по ИСКЛ. ИЛИ в результате будет повт. число
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411866
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петрович-64Сложи все числа по ИСКЛ. ИЛИ в результате будет повт. число ты перепутал с "обратной" задачей, когда повторяются все числа кроме одного
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37411902
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечПетрович-64Сложи все числа по ИСКЛ. ИЛИ в результате будет повт. число ты перепутал с "обратной" задачей, когда повторяются все числа кроме одного

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

а че бы подобное решение не придумать.А что бы нам не придумать алгоритм факторизации за линейное время.

Сделать XOR последнего элемента всему остальному массиву можно без проблем. Потом предпоследнего и так далее, пока не получится ноль в середине - несколько десятков ассемблерных команд на всю процедуру, среднее время O(n 2 ).
Сделать XOR соседей (превращая (a 1 ,a 2 ,a 3 ,...) в (a 1 ^a 2 ,a 2 ^a 3 ,a 3 ^a 4 ,...)), по пути анализируя, не получилось ли нуля, можно без проблем. Повторить придётся столько раз, каково расстояние между дубликатами; среднее время O(n 2 ), но если нам известно, что дубликаты близко, может оказаться полезно.
Вариант с хэш-таблицей вроде бы работает за O(n). В одном списке можно искать предыдущим способом.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37412557
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
romapostподскажите какой лучше всего алгоритм использовать для решения данной задачи, и желательно литературу

Дан массив произвольного размера с числами в пределах от 1 до 1,000,000. В этом массиве все числа уникальные, кроме одного числа, которое повторяется два раза. Найти это число. Решить эту задачу с минимальным использованием процессорного времени.
Старый боян. Решается битовой картой.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37412579
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Чтобы минимизировать процессорное время наверное таки не битовой, а int-овой (ограничения на память у нас нет).
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37412583
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя в оригинале задачи не просят найти минимальное процессорное время, а как обычно, минимальную оценку. Т.е. решить за время O(n). Препод (или кто там перефразировал условие) получается поставил задачу, "правильное" решение которой еще и от выбранного средства программирования зависит! ))))
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37412605
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragonmayton,

Чтобы минимизировать процессорное время наверное таки не битовой, а int-овой (ограничения на память у нас нет).
Использования доп. массива int-ов препод не одобрит.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37412617
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonEdd.Dragonmayton,

Чтобы минимизировать процессорное время наверное таки не битовой, а int-овой (ограничения на память у нас нет).
Использования доп. массива int-ов препод не одобрит.
Гм.
На первый взгляд, времена сравнимы (на битах выигрываем на начальном обнулении, проигрываем на проверке значения одного бита). Надо испытывать, ИМХО. У меня ощущение, что биты проиграют.
Но в изначальной формулировке сущность "препод" и её свойства не фигурируют.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37412631
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Битмапа - это элегантное и скромное решение. При прочих равных условиях я-бы отдал
ей предпочтение тем более что на O(n) выбор это не влияет.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37412638
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonБитмапа - это элегантное и скромное решение. При прочих равных условиях я-бы отдал
ей предпочтение тем более что на O(n) выбор это не влияет.
Разумеется. Более того, во времена зарождения таких этюдов использоватьинт вместо бита было вообще кощунством.

Но если написано - минимизировать процессорное время, но ни слова о памяти, то и выбор очевиден.
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37412756
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
вместо массива писать в файл уже предлагали?
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37412841
JoFan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
eNoseвместо массива писать в файл уже предлагали?

работа с файлом существенно затормозит проц на ожидание
...
Рейтинг: 0 / 0
Подскажите алогоритм, литературу по решению данной задачи
    #37413039
Nitica
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonromapostподскажите какой лучше всего алгоритм использовать для решения данной задачи, и желательно литературу

Дан массив произвольного размера с числами в пределах от 1 до 1,000,000. В этом массиве все числа уникальные, кроме одного числа, которое повторяется два раза. Найти это число. Решить эту задачу с минимальным использованием процессорного времени.
Старый боян. Решается битовой картой.

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


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