|
|
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Panshin, Кто-то сказал, что число 36 253 в этой последовательности есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 12:28 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
PanshinЭто очень просто без всякого алгоритма, если подумать. Если число одно и повторяется только один раз, то сложи числа от 1 до миллиона, потом сложи данную последовательность чисел и от второго отними первое. Получишь число, которое повторилось. Если в исходном массиве числа 1,2,2 то какой результат вы получите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 12:30 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Требуется указать число, либо его индекс в некотором массиве. Возможных индексов - n, чисел - 1000000. Если отсортировать массив (O(n*ln(n))), то проверка каждого индекса на правильность - O(1). Каким свойством вместо монотонности может обладать массив, чтобы наличие дубликатов элемента по заданному индексу проверялось за O(1)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 12:33 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
DENIS_CHEL, Понятное дело я указал на частный случай. Можно обобщить. Сложим все числа последовательности 1,2,2 = 5 Следовательно максимальное число в последовательности будет не более 5. Далее найдем максимальное число в последовательности и вычтем его из суммы, при этом удалим его из последовательности. Выполнив таким образом m-1 шагов, где m - количество элементов в последовательности мы найдем парное число так как оно будет дважды появляться в нахождении максимума урезаемой последовательности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 12:40 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Panshin, получится О(N 2 ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 12:44 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Panshin На каждой итерации мы осуществляем поиск максимума... Будет ли в общем случае выигрыш по сравнению с сортировкой?:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 12:46 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
а с адресацией ничего нельзя замутить? ну там проверять память по адресу == числу в массиве и если не какое-то значение, значит менять. если значение уже есть, то значит нашли. хотя это ничем от массива не отличается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 12:47 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
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; } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 12:50 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Nitica, Бедный процессор. И вообще, если массив "по умолчанию" заполнен нулями, то, позвольте спросить, кто его заполнил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 12:57 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Исходный массив с числами произвольной длины... Но не больше 1 000 000. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 12:57 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Пока приходит на ум какая нибудь быстрая сортировка, где в операции сравнения и будем проверять на равенство ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 13:00 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
DENIS_CHELИсходный массив с числами произвольной длины... Но не больше 1 000 000. 1 000 001 ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 13:04 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
JoFanПока приходит на ум какая нибудь быстрая сортировка, где в операции сравнения и будем проверять на равенство Быстрые сортировки потому и быстрые, что сравнивают друг с другом не все n(n-1)/2 пар. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 13:10 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Abstraction, Бедный процессор. то есть сортировка, по Вашему мнению, менее затратна, чем просто один пробег по массиву. Указатели - самое менее затратное средство в вычислениях как ни крути :) И вообще, если массив "по умолчанию" заполнен нулями, то, позвольте спросить, кто его заполнил? это псевдо-код :) в Visual C, например, точно будут нулики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 13:15 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
NiticaAbstraction, Бедный процессор. то есть сортировка, по Вашему мнению, менее затратна, чем просто один пробег по массиву. Указатели - самое менее затратное средство в вычислениях как ни крути :) И вообще, если массив "по умолчанию" заполнен нулями, то, позвольте спросить, кто его заполнил? это псевдо-код :) в Visual C, например, точно будут нулики Массив в 500 элементов, а мы отжираем 2 Mb. Спорный выигрыш. Visual C++ 6.0, насколько помню, выделяемую такой конструкцией память не обнуляет. Для примера. В любом случае, если мы не надеемся на то, что у системы завалялись обнулённые страницы, это придётся делать нашему процессу, увы. А если танцевать от хэш-таблицы? Функция h(x)=x%n, получаем n классов (некоторые из которых, возможно, пустые), оба дубликата в одном классе; время создания - O(n), среднее время проверки одного класса - O(1). Правда, при этом совершенно не используем ограниченность спектра значений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 13:31 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
AbstractionМассив в 500 элементов, а мы отжираем 2 Mb. Спорный выигрыш. при иницилизации массива ничего физически не выделяется. а вот когда начинаем обнулять, да... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 13:34 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Abstraction, Массив в 500 элементов, а мы отжираем 2 Mb. Спорный выигрыш. в формулировке задачи вроде как ясно сказано, что ограничений по памяти нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 13:41 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
eNoseпри иницилизации массива ничего физически не выделяется. Я что-то пропустил? После инициализации мы имеем адрес начала области памяти, к которой можно обращаться. Откуда она берётся, в таком случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 13:42 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
NiticaAbstraction, Массив в 500 элементов, а мы отжираем 2 Mb. Спорный выигрыш. в формулировке задачи вроде как ясно сказано, что ограничений по памяти нет. Ограничений нет. Но эти 500 1250 страниц кому-то надо выделить, а потом эти полмиллиона миллион с хвостиком машинных слов кому-то обнулить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 13:45 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
AbstractioneNoseпри иницилизации массива ничего физически не выделяется. Я что-то пропустил? После инициализации мы имеем адрес начала области памяти, к которой можно обращаться. Откуда она берётся, в таком случае? вот когда начнешь обращаться, тогда и выделяться будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 13:45 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Abstraction, можешь проверить. выдели памяти под массив больше чем доступно. выделится. начни заполнять - получишь ошибку нехватки памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 13:46 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Abstraction, Ограничений нет. Но эти 500 1250 страниц кому-то надо выделить, а потом эти полмиллиона миллион с хвостиком машинных слов кому-то обнулить. В Винде есть ZeroMemory - она прекрасно справится :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 13:53 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
eNose, Проверил на C#, проверил на C++. Я прав ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 14:36 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
AbstractioneNose, Проверил на C#, проверил на C++. Я прав ;) проверь на делфи ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 14:41 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
eNose, Где ж я вам его возьму? Но вообще, идея выделять память только при обращении к ней подразумевает, что мы обращаемся не напрямую к памяти, а вызываем некоторый метод, который вначале проверяет, выделили ли нам эту память. Что выливается в потерю производительности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 14:44 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Сложи все числа по ИСКЛ. ИЛИ в результате будет повт. число ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 15:07 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Петрович-64Сложи все числа по ИСКЛ. ИЛИ в результате будет повт. число ты перепутал с "обратной" задачей, когда повторяются все числа кроме одного ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 15:09 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Яростный МечПетрович-64Сложи все числа по ИСКЛ. ИЛИ в результате будет повт. число ты перепутал с "обратной" задачей, когда повторяются все числа кроме одного а че бы подобное решение не придумать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 15:25 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
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). В одном списке можно искать предыдущим способом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 15:34 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
romapostподскажите какой лучше всего алгоритм использовать для решения данной задачи, и желательно литературу Дан массив произвольного размера с числами в пределах от 1 до 1,000,000. В этом массиве все числа уникальные, кроме одного числа, которое повторяется два раза. Найти это число. Решить эту задачу с минимальным использованием процессорного времени. Старый боян. Решается битовой картой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 22:35 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
mayton, Чтобы минимизировать процессорное время наверное таки не битовой, а int-овой (ограничения на память у нас нет). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 23:17 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Хотя в оригинале задачи не просят найти минимальное процессорное время, а как обычно, минимальную оценку. Т.е. решить за время O(n). Препод (или кто там перефразировал условие) получается поставил задачу, "правильное" решение которой еще и от выбранного средства программирования зависит! )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 23:20 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Edd.Dragonmayton, Чтобы минимизировать процессорное время наверное таки не битовой, а int-овой (ограничения на память у нас нет). Использования доп. массива int-ов препод не одобрит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 23:40 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
maytonEdd.Dragonmayton, Чтобы минимизировать процессорное время наверное таки не битовой, а int-овой (ограничения на память у нас нет). Использования доп. массива int-ов препод не одобрит. Гм. На первый взгляд, времена сравнимы (на битах выигрываем на начальном обнулении, проигрываем на проверке значения одного бита). Надо испытывать, ИМХО. У меня ощущение, что биты проиграют. Но в изначальной формулировке сущность "препод" и её свойства не фигурируют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2011, 23:51 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
Битмапа - это элегантное и скромное решение. При прочих равных условиях я-бы отдал ей предпочтение тем более что на O(n) выбор это не влияет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2011, 00:09 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
maytonБитмапа - это элегантное и скромное решение. При прочих равных условиях я-бы отдал ей предпочтение тем более что на O(n) выбор это не влияет. Разумеется. Более того, во времена зарождения таких этюдов использоватьинт вместо бита было вообще кощунством. Но если написано - минимизировать процессорное время, но ни слова о памяти, то и выбор очевиден. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2011, 00:21 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
вместо массива писать в файл уже предлагали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2011, 07:55 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
eNoseвместо массива писать в файл уже предлагали? работа с файлом существенно затормозит проц на ожидание ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2011, 09:32 |
|
||
|
Подскажите алогоритм, литературу по решению данной задачи
|
|||
|---|---|---|---|
|
#18+
maytonromapostподскажите какой лучше всего алгоритм использовать для решения данной задачи, и желательно литературу Дан массив произвольного размера с числами в пределах от 1 до 1,000,000. В этом массиве все числа уникальные, кроме одного числа, которое повторяется два раза. Найти это число. Решить эту задачу с минимальным использованием процессорного времени. Старый боян. Решается битовой картой. +1 помню у нас была схожая задачка на алгоритмизации - есть файл с телефонными номерами, допустим внутри может быть до миллиона номеров. необходимо отсортировать содержимое файла при ограничении памяти 1 Мб. препод ждал как раз вариант битовой карты :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2011, 11:00 |
|
||
|
|

start [/forum/topic.php?all=1&fid=16&tid=1342770]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
182ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
100ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 550ms |

| 0 / 0 |
