Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++] porównywanie tysięcy liczb

Ostatnio zmodyfikowano 2017-12-07 20:00
Autor Wiadomość
grzeso
Temat założony przez niniejszego użytkownika
[c++] porównywanie tysięcy liczb
» 2017-12-05 20:36:06
Witam

Mam taki problem, mam dwa zbiory po 10tys liczb z zakresu 1-100000. Liczby są wylosowane, nie mogą się w zbiorze powtórzyć, ale w dwóch zbiorach mogą się powtarzać.


I chce sprawdzić ile z tych liczb się powtórzyło. Oczywiście mogę to zrobić tak:
C/C++
int ile_sie_powtarza = 0;

for( int i = 0; i < 100000; i++ )
{
   
    for( int j = 0; j < 100000; j++ )
    {
        if( zbior1[ i ] == zbior2[ j ] )
        { ile_sie_powtarza++ }
    }
   
}

tylko szukam jakiegoś lepszego sposobu, z użyciem obiektówki, bo wylosowane zbiory pochodzą z dwóch różnych klas.
P-167599
pekfos
» 2017-12-05 20:54:48
Sortowanie byłoby dobrym startem.
P-167605
grzeso
Temat założony przez niniejszego użytkownika
» 2017-12-05 20:59:56
W celu przyśpieszenia znalezienia pary?

Ogólnie to nie chciałbym używać tego fragmentu kodu który napisałem wcześniej. Da się to tak zrobić?
P-167606
Luq
» 2017-12-05 21:02:25
Można użyć std::set lub std::unordered_set.
P-167607
grzeso
Temat założony przez niniejszego użytkownika
» 2017-12-05 21:12:48
coś na zasadzie:

C/C++
set < int > liczba;

liczba.insert( zbior1[ i ] );
liczba.insert( zbior1[ i + 1 ] );
(...)


if( liczba.find( zbior2[ i ] ) )
     "ile_sie_powtarza++ ";

P-167609
pekfos
» 2017-12-05 21:16:26
Nie licząc wszystkich błędów w tym kodzie, tak.
P-167611
grzeso
Temat założony przez niniejszego użytkownika
» 2017-12-05 21:35:39
Pewnie że nie licząc, bo to tak tylko orientacyjnie.

a jakby zrobić dwa te sety i do dwóch wepchnąć liczby to da się jakoś szybko porównać ile jest powtórzonych?

albo ewentualnie jakoś bardziej obiektowo to napisać?
P-167614
Monika90
» 2017-12-05 21:38:43
Ponieważ zakres jest bardzo mały [1, 100000] i liczby się nie powtarzają, to możesz użyć std::vector<bool> albo nawet vector<char>.


ewentualnie jakoś bardziej obiektowo to napisać?
Ale co rozumiesz przez obiektowo?
P-167615
« 1 » 2
  Strona 1 z 2 Następna strona