Kezdőoldal » Számítástechnika » Programozás » Ki az aki ismeri és érti a...

Ki az aki ismeri és érti a pszeudokódokat?

Figyelt kérdés

Pár kérdésem lenne amit nem igazán értek. Az alábbiak mit jelentenek:

S<-0

S

I

A[I]

I<-(1....N)

T

CVége

FVége

E

U

Div

K

J

EVége

Hálás lennék ha ezeket valki le tudná nekem írni, sehol nem találtam hozzá magyarázatot, így nehézkes hasznosítaninezeket. Neten ilyen miért nincs fent?



2019. máj. 27. 11:54
1 2 3
 21/25 tabaki ***** válasza:
2019. máj. 28. 21:47
Hasznos számodra ez a válasz?
 22/25 anonim ***** válasza:

Bocs a generikus kód miatt. Csak azért írtam így, mert le akartam tesztelni a különböző méretű értéktípusok közötti teljesítménykülönbséget.


Jól értelmezed. A lényeges eltérés a kettő között, hogy az általam linkelt algoritmus először kikeresi a minIndexet és csak a legvégén cserél. Azaz max array.Length-1 cserét végez. Ezeket számlálom a swap változóban. Képzelj el egy olyan szituációt ahol a T mondjuk egy 50 bájtos értéktípus és van belőle egymillió. Ekkor nem mindegy, hogy hány cserét végzel.


Elméletben ki lehetne matekolni, hogy átlagosan melyik menyi cserét végez de én inkább közelítem Monte Carlo módszerrel.


Véletlen számokból generáltam 1 000 hosszú listákat és ezeket rendeztem mindhárom rendezéssel.

Ezer ilyen lista rendezése során a cserék átlaga:

Unknown sort swaps: 216169

Bubble sort swaps: 249564

Selection sort swaps: 995


Na most ha ezek 50 bájtos értékek és minden cserénél ezeket 3x mozgatod minden egyes csere esetén (temp változót használsz stb). Ekkor az általam linkelt algoritus 50 * 3 * 995 = 149 250 bájt = 150 megabájt memóriaforgalmat generál. A kérdező átlal linkelt algoritmus(unknown) viszont 50 * 3 * 216 169 = 32 425 350 bájt = 32,4 GB!!! memóriaforgalom.


És ez csak egy ezer soros lista. Mivan, ha egmiliárd rekordot akarsz rendezni. A memóriaforgalom is exp. növekszik.


A fenti számítást ugye beárnyékolja a cache és cpu regiszterek létezése illetve hogy erre a problémára a quick sort lenne az alkalmas.

Egyébként a selection sort is nagyon hatékony ha csak néhány elem nincs a helyén.

2019. máj. 28. 22:24
Hasznos számodra ez a válasz?
 23/25 anonim ***** válasza:

váááá elszámoltam ennyire meredek különbség nincs csak a fölös cseréket spórolja meg


a másodiknál még hozzá kell adni a minimumkeresésnél minden összehasonlításnál 2 olvasás történik amiből van 5 273

50 * 3 * 995 + 50 * 2 * 5 273 = 676 550 bájt 676 megabájt

2019. máj. 28. 22:54
Hasznos számodra ez a válasz?
 24/25 anonim ***** válasza:
yup nem kellene begombázva programozni visszaszívom az egészet
2019. máj. 28. 23:02
Hasznos számodra ez a válasz?
 25/25 anonim ***** válasza:

Utólag aztán rájöttem, hogy igen, egy minimumkeresés volt benne és a végén csak azt cserélte.


Mondjuk én annyiból nem bánom, hogy beraktad ide azt a generikust, hogy így le tudtam tesztelni magam, hogy mennyire értem meg.

2-3 hónapja még konkrétan sírtam volna a látványától, most viszont ezek szerint kb 15 perc alatt nagyjából megértettem. Még az IComparable interface-nek kell utánanéznem, pont az említett 2-3 hónapja találkoztam vele utoljára és jegeltem szegényt.



Azért szeintem egy kezdőnek nehéz téma a generikusok.

2019. máj. 29. 07:11
Hasznos számodra ez a válasz?
1 2 3

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!