Форум программистов, компьютерный форум CyberForum.ru

Нахождение элементов массива, встречающихся не менее определенного количества раз - C++

Восстановить пароль Регистрация
 
JulietteDrew
0 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 8
30.09.2013, 22:40     Нахождение элементов массива, встречающихся не менее определенного количества раз #1
В файле записано огромное количество таких же огромных чисел (например, один миллиард чисел, каждое из которых находится в промежутке от нуля до миллиарда). Числа эти считываются последовательно, то есть нет возможности прочитать после третьего не четвертое, а десятое число. Необходимо найти такие элементы, которые встречаются в последовательности не меньше заданного количества раз (например, не меньше миллиона).
Очень нужна ваша помощь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2013, 22:40     Нахождение элементов массива, встречающихся не менее определенного количества раз
Посмотрите здесь:

C++ Нахождение количества определенных элементов массива
C++ Удалить из массива все элементы встречающиеся менее 3-х раз и вывести размер полученного массива и его содержимое.
C++ Нахождение среднего геометрического определенного двумерного массива
C++ Нахождение количества отрицательных элементов
C++ Среди чисел массива, встречающихся минимальное число раз, найти максимальное
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newbie666
Заблокирован
30.09.2013, 22:54     Нахождение элементов массива, встречающихся не менее определенного количества раз #2
Миллиарды считаются на CUDA.
А так ваще, если не лень ждать хрен знает сколько, чё те мешает это всё в std::map засунуть?
Например так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include <map>
 
int _tmain(int argc, _TCHAR* argv[])
{
    std::map<long long, long long> matrix;
    //как то в цикле читаю из файла число, например прочитал это:
    long long item = 666666666;
    if(matrix.count(item) > 0)
    {
        matrix[item]++;
        if(matrix[item] > 1000000000)
        {
            //Эгегей, наконец то мое супер число 666666666 встретилось больше миллиарда раз :-))))))
        }
    }
    else
        matrix[item] = 1;
    return 0;
}
JulietteDrew
0 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 8
30.09.2013, 23:01  [ТС]     Нахождение элементов массива, встречающихся не менее определенного количества раз #3
Мне совсем не лень, но программа должна работать 2-3 секунды (со слов преподавателя). Тут должен быть какой-нибудь хитрый способ считать все эти числа и зафиксировать частоту их встречаемости, так что проблема не в подсчете. Но спасибо за помощь
newbie666
Заблокирован
30.09.2013, 23:04     Нахождение элементов массива, встречающихся не менее определенного количества раз #4
Цитата Сообщение от JulietteDrew Посмотреть сообщение
Тут должен быть какой-нибудь хитрый способ считать все эти числа и зафиксировать частоту их встречаемости
Понимаешь, миллиард чисел из файла на харддиске ты за две три секунды не считаешь.... Так что попробуй мой способ и засекай время...
Yandex
Объявления
30.09.2013, 23:04     Нахождение элементов массива, встречающихся не менее определенного количества раз
Ответ Создать тему
Опции темы

Текущее время: 14:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru