Имя: Пароль:
IT
 
Задача на поиск числа
0 EverGreenMouse
 
21.08.15
10:04
Есть огромный файл в несколько гигабайт, в котором записаны целые числа. Известно, что каждое число встречается два раза, но есть единственное число, которое встречается один раз. Предложите эффективный алгоритм для поиска этого числа. Как изменится алгоритм, если каждое число будет встречаться в файле чётное число раз, а единственное из них нечётное число раз?
1 Dmitriy_76
 
21.08.15
10:22
отсортировать для начала.
2 Cube
 
21.08.15
10:24
(0) Числа в ТЗ, добавить колонку с единичками, свернуть по первой колонке, отсортировать по второй колонке, выбрать первую строку, откусить булку, хлебнуть чаю...
3 igork1966
 
21.08.15
10:26
(0) Если нет ограничения на использование памяти, в лоб делается за один проход файла.
4 Тихий омут
 
21.08.15
10:26
привести файл в вид, который способен проглотить булк инсерт,
создать в скуле базу с единственной таблицей и единственной колонкой, скормить файл скулю, написать запрос...
5 Гёдза
 
21.08.15
10:27
если числа БЕЗ пропусков, то тупым вычислением можно узнать. Если с пропусками, то только перебором
6 igork1966
 
21.08.15
10:27
(3) + в коллекцию добавляем при первом появлении и удаляем при втором, в конце в коллекции останется искомое
7 Гёдза
 
21.08.15
10:29
(6) в худшем случае потребуется памяти в половину от файла
8 D_Pavel
 
21.08.15
10:34
Берем очередное число из файла, пробегаем по файлу в поисках дубля. Удаляем из файла чтобы второй раз не проверять. И так со всеми числами.
Для ускорения можно брать не одно, а блок чисел за один раз, смотря сколько памяти можно задействовать.
9 Dmitry77
 
21.08.15
10:36
(0) " а единственное из них нечётное число раз" - это как???
10 Mifka
 
21.08.15
10:44
(9) есть числа 1,2,3 которые повторяются 2 раза, 4 раза и т.д. а есть число 5 которое повторяется 3 раза, 5 или 7 и т.д.
вот 5 ему нужно найти
11 Lama12
 
21.08.15
10:52
ИМХО. Лучшее решение в (6). Хотя в (0) не озвучены критерии определения эффективности.
12 Ненавижу 1С
 
гуру
25.08.15
12:06
(0) применить, например, операцию XOR - на выходе будет искомое число