0 / 0 / 0
Регистрация: 18.08.2016
Сообщений: 6
|
|
1 | |
Поиск максимального элемента в файле20.09.2017, 14:11. Показов 2291. Ответов 4
Метки нет Все метки)
(
Доброго времеи суток. Не подскажие, как осуществить поиск максимального элемета из записаных в файл. В файле 5 столбиков чисел типа double, нужно найти наибольший в четвертом (и только в нем). Я бы записал числа в массив, но проблема в том, что объем файла 10ГБ, а именно, в каждом столбике по миллиарду чисел (10^9), но файл может быть и больше. У меня всего оперативной памяти 2ГБ, так что за раз все не обработать, разве что перебором по одому числу, но это сильно не эффективно по времени.
Буду призателен, если будут примеры на C или C++ или ссылки на методы оптимального поиска. И попутно - можно ли считать сразу четвертое число из файла, чтобы не перебирать их все?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
20.09.2017, 14:11 | |
Ответы с готовыми решениями:
4
Поиск максимального элемента Поиск максимального элемента массива Поиск максимального элемента по модулю |
3528 / 2172 / 400
Регистрация: 09.09.2017
Сообщений: 8,975
|
|
20.09.2017, 16:08 | 2 |
Если скорость доступа настолько критична, можно использовать отображение файла на память (memory mapping, команда mmap() ).
Если ширина столбиков фиксирована и известна (я бы не стал на такое полагаться), вместо этого можно использовать fseek().
0
|
189 / 177 / 111
Регистрация: 22.06.2009
Сообщений: 533
|
|
20.09.2017, 19:56 | 3 |
то ли я тормоз то ли лыжи ни едут.. Как это "столбики" эксель ???
прикрепите маленький пример файла.. А так, я бы разбил все по небольшим порциям, потом из каждой порции взял бы максимальное значения, которые заного превратил в порции, и так до конца..
0
|
0 / 0 / 0
Регистрация: 18.08.2016
Сообщений: 6
|
|
20.09.2017, 21:16 [ТС] | 4 |
Спасибо, почтаю подробней, может поможет.
Вот пример на 5 чисел. То, что в четвертом максимальным является именно последний - случайно.
0
|
189 / 177 / 111
Регистрация: 22.06.2009
Сообщений: 533
|
|
20.09.2017, 22:32 | 5 |
JonyCage, Т.е в таком формате будут данные идти, верно??
В таком случае можно Создаем две переменные double current = 0 double max = 0 1) считываем строку начиная с 66 позиции по 117 2) заносим данные в переменную current 3) сравниваем if(current>max) max = current; 4) переносим коретку на новую строку, 5) начинаем с пункта 1) В конце концов получим max, как результат максимального значения..
0
|
20.09.2017, 22:32 | |
Помогаю со студенческими работами здесь
5
Поиск максимального элемента вектора
Осуществить поиск индекса максимального элемента Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |