Kezdőoldal » Számítástechnika » Programozás » Melyik a leggyorsabb algoritmu...

Melyik a leggyorsabb algoritmus annak meghatározására, hogy egy gyűjteményből kiszedjük egy összegszám két összeadandóját?

Figyelt kérdés
Például van egy gyűjteményem, véletlenszerű számokkal, és meg akarom keresni ebben a gyűjteményben azt a két számot, amit ha összeadok akkor megkapom az én számomat. (azt az esetet, nem kell külön lekezelni, amikor nincs ilyen számpár, a lényeg az algoritmus maga). C++-ban kellene implementálni. A leglassabb módszer ha egyesével végigmegyek a számokon, de ennél hatékonyabb kellene.

2019. júl. 18. 09:57
 1/3 anonim ***** válasza:
Csinálsz belőle egy másolatot halmazként és az eredeti gyűjtemény elemeit végigjárod, ellenőrizve, hogy a halmazban megvan a különbsége. O(n^2) helyett O(n) lesz a komplexitás.
2019. júl. 18. 10:32
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:
Elso, (mar ha "halmaz" alatt hashtable-re gondoltal) ennek 2n lesz a helyigenye. "masolat" nelkul a legjobb, amit eddig talaltam: nlogn-es algoritmussal rendezed, utana elkezdesz iteralni ket mutatoval a sorozat ket szelerol, ha az aktualis par osszege nagyobb a keresettnel, lepteted az utolso mutatot balra, ha kisebb, lepteted az elsot jobbra, ez nlogn+n?
2019. júl. 18. 11:02
Hasznos számodra ez a válasz?
 3/3 anonim ***** válasza:
Halmaz alatt a Set containerre gondolok, aminek a megvalósítása valóban egy hashtable.
2019. júl. 18. 14:16
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!