|
|
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
подскажите какой лучше всего алгоритм использовать для решения данной задачи, и желательно литературу Дан массив произвольного размера с числами в пределах от 1 до 1,000,000. В этом массиве все числа уникальные, кроме одного числа, которое повторяется два раза. Найти это число. Решить эту задачу с минимальным использованием процессорного времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 09:16 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
select i from ( select i, count(i) n from table1 group by i ) where n>1 это если лень думать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 09:36 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
сложить все числа. Потом из полученной суммы вычесть сумму всех чисел от 1 до n. В остатке будет повторяющееся число. Сумму чисел от 1 до эн наити по формуле из школьного учебника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 09:38 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
это если значения не превосходят размерности массива ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 09:40 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Если говорить об алгоритме без sql, то я бы предложил следующее: 0) Отсортировать исходный массив. 1) Совершить по отсортированному массиву 1 проход, сравнивая соседние числа между собой... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 09:46 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
On 25.08.2011 10:16, romapost wrote: > *Дан массив произвольного размера с числами в пределах от 1 до 1,000,000. В этом > массиве все числа уникальные, кроме одного числа, которое повторяется два раза. На счёт вот "повторяется два раза" -- это как вообще ? Сколько в итоге экземпляров этого числа в массиве -- два или четыре ? или даже может быть три ? Товарищь, который формулировал задание, был хитрый. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 09:49 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за наводку! Интересует прежде всего вариант без sql, название метода, и что почитать , я думаю значения могут превышать размерность массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 09:52 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 09:53 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
MasterZivСколько в итоге экземпляров этого числа в массиве -- два или четыре ? или даже может быть три ? Товарищь, который формулировал задание, был хитрый. И мое решение и Еноза это корректно отработает... Вопрос в том будет ли это верным ответом на вопрос... PS Не люблю задачи типа "Докажите что..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 09:53 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
On 25.08.2011 10:53, DENIS_CHEL wrote: > И мое решение и Еноза это корректно отработает... Вопрос в том будет ли это > верным ответом на вопрос... Твоё решение -- вообще никакое, это долго. Хотя конечно решение. Еноза решение -- не решение вообще. Загружать миллион записей в таблицу БД только чтобы понять, какое число повторяется -- это бред. Даже твоё решение лучше. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 09:56 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
DENIS_CHELЕсли говорить об алгоритме без sql, то я бы предложил следующее: 0) Отсортировать исходный массив. 1) Совершить по отсортированному массиву 1 проход, сравнивая соседние числа между собой... ограничения только по использованию процессора, а не по памяти. так что проще: 1) создать второй массив [1..1000000] и в него закидывать элементы первого по индексам. если перед присваиванием не ноль, значит это и есть искомое неуникальное число. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 09:57 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
MasterZivЕноза решение -- не решение вообще. Загружать миллион записей в таблицу БД только чтобы понять, какое число повторяется -- это бред. про виртуальные талицы слышал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 09:58 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
eNoseDENIS_CHELЕсли говорить об алгоритме без sql, то я бы предложил следующее: 0) Отсортировать исходный массив. 1) Совершить по отсортированному массиву 1 проход, сравнивая соседние числа между собой... ограничения только по использованию процессора, а не по памяти. так что проще: 1) создать второй массив [1..1000000] и в него закидывать элементы первого по индексам. если перед присваиванием не ноль, значит это и есть искомое неуникальное число. Я над этим думал - сортировка подсчетом, но вся прелесть, что нам не надо сортировать до конца:) Но есть один момент создать массив в 1 000 000 обнулить его то же затратно, в исходной задаче сказано "массив произвольного размера", сортировка 3-х чисел будет быстрее:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 10:01 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
DENIS_CHELЕсли говорить об алгоритме без sql, то я бы предложил следующее: 0) Отсортировать исходный массив. 1) Совершить по отсортированному массиву 1 проход, сравнивая соседние числа между собой... O(n*ln(n)). Хотя, на самом деле, любое решение будет O(n*ln(n)). Числа, укладывающиеся в 20 бит. Ограничение на время процессора, но не на память. Хм. Заводим служебный массив в 2 Mb, инициализируем нулями. Для каждого числа в массиве, если соответствующая ячейка служебного массива ноль, пишем один; если была единица - ура, мы нашли клиента. Ничего быстрее мне в голову не приходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 10:02 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
DENIS_CHELНо есть один момент создать массив в 1 000 000 обнулить его то же затратно, в исходной задаче сказано "массив произвольного размера", сортировка 3-х чисел будет быстрее:) Можно добавить ветку для малых n. Одна проверка погоды не сделает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 10:03 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
AbstractionЧисла, укладывающиеся в 20 бит. Ограничение на время процессора, но не на память. Хм. Заводим служебный массив в 2 Mb, инициализируем нулями. Для каждого числа в массиве, если соответствующая ячейка служебного массива ноль, пишем один; если была единица - ура, мы нашли клиента. Ничего быстрее мне в голову не приходит. Это и есть сортировка подсчетом, выше уже предлагали... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 10:05 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
DENIS_CHELНо есть один момент создать массив в 1 000 000 обнулить его то же затратно да, тут даже биты не спасут... 125 тысяч элементов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 10:09 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
eNoseDENIS_CHELНо есть один момент создать массив в 1 000 000 обнулить его то же затратно да, тут даже биты не спасут... 125 тысяч элементов...125000 байт? копейки, отработает за доли секунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 11:40 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Яростный МечeNoseпропущено... да, тут даже биты не спасут... 125 тысяч элементов...125000 байт? копейки, отработает за доли секунды. мож есть менее затратный для проца вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 11:59 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
romapost, Может связный список? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 12:08 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
eNose, Вообще-то, есть System Idle, благодаря которому мы имеем шанс сразу получить обнулённые страницы. Можно попробовать опереться на другие сортировки. Скажем, поразрядная потребует выделения 64-кратного объёма исходного массива без обнуления и поиск дубликата потребует довести сортировку в среднем до половины, но на таком мелком массиве это не окупается. Шелл позволит теоретически найти дубликат на больших списках (а Хоар, соответственно, обнаружить равенство разделяющему элементу), но вероятность этого меньше 1/2. Исходный массив обладает тем свойством, что его элементы не нули и XOR любой пары элементов кроме искомых не ноль. Интересно, можно ли за это зацепиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 12:15 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
GrasQtRМожет связный список? А нафига? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 12:16 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
GrasQtRromapost, Может связный список? Городить этот огород еще хуже сортировки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 12:19 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Это очень просто без всякого алгоритма, если подумать. Если число одно и повторяется только один раз, то сложи числа от 1 до миллиона, потом сложи данную последовательность чисел и от второго отними первое. Получишь число, которое повторилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 12:24 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
PanshinЭто очень просто без всякого алгоритма, если подумать. Если число одно и повторяется только один раз, то сложи числа от 1 до миллиона, потом сложи данную последовательность чисел и от второго отними первое. Получишь число, которое повторилось. В задаче написано: массив произвольного размера, не сказано что числа будут идти строго по порядку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 12:28 |
|
||
|
|

start [/forum/search_topic.php?author=ragm&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 656ms |
| total: | 816ms |

| 0 / 0 |
