Ki az aki ismeri és érti a pszeudokódokat?
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?
Észrevettem, hogy a következő az a "Rendezés minimum kiválasztással". Na én a minimum kiválasztását értelmezem közvetlen kiválasztásnak és nem azt hogy fölöslegesen cserélgetsz kiválasztás nélkül.
Elnézést kérek a kirohanásomért. Így már kevésbé jogos.
A C# kódot elnézve a metódus neve nem teljesen pontos, gyorsan utána is néztem:
Egybetűs változónevek...
Nem biztos, hogy segítenek egy tanulónak + nem jó rászokni az elején.
Én array-nek vagy tomb-nek nevezném a tömböt és temp-nek a cseréhez használt változót. Egy csere megértésében különösen segít a beszédes elnevezés; a 'c' csak zavaró.
A kérdésed legfogósabb problémája, hogy mivel lehetne még kiegészíteni a szájbarágásig részletezett, kész kóddal is illusztrált magyarázatot. Bocsánat, de neked nem a pszeudokóddal van bajod, hanem az alapfogalmakkal, mégpedig olyan mértékben, hogy az egyértelmű meghatározásokkal se tudsz mit kezdeni. Engedtessék meg egy párhuzam. Mondjuk ezt olvasom az Aranyszamár Bábszínház színlapján:
FLOKI -- TACSKÓ, HÁZŐRZŐ KUTYA
... Utána felteszem itt a kérdést: „A bábozásban mit jelent, hogy Floki?”. Kíváncsi lennék rá, hogy amikor megpróbálsz erre válaszolni, gondolsz-e a következőkre: Én nem jövök rá magamtól, hogy ez egy szereplő neve, nem tudom, mi az a kutya, sem pedig, hogy milyen kutya a tacskó, és mit csinál egy házőrző. Amikor erre ráeszmélsz, valószínűleg bársonyos szavakkal közlöd majd, hogy legalább bizonyos ismereteknek a birtokában kéne lennem ahhoz, hogy a dolgok egyáltalán magyarázhatók legyenek, illetve, hogy a bábjáték működésétől voltaképpen független, hogy egy Floki nevű tacskó, vagy egy Narxhlung nevű vegán csillagközi poéta szerepel-e benne.
Az A[], C, I, J, N meg a kérdésbe ki tudja, honnan belekeveredett E, K, S, T, U láthatólag (+ megmagyarázva) nem részei a pszeudokód jelölésrendszerének, hanem szabadon választott azonosítónevek az egyébként lelkiismeretesen megjelölt típusú elemek számára.
Egyebek, amik viszont odatartoznak, aztán vagy megkérdezted, vagy sem:
Sorozat -- elemek indexelhető csoportja. Ez a mellékelt kódban egészek tömbje, de a pszeudokód általánosabban fogalmaz, az algoritmus működne mással is, pl. lista vagy string esetén.
Egész -- egész (a kódban egyszerű int) típusú változó.
Elemtip -- Az A sorozat elemeinek megfelelő típus, ami itt történetesen int, de a pszeudokód érthetően nem határolja be.
A[I] -- Az A sorozat I indexű eleme. Ha pl. I értéke 3, akkor a hármas sorszámmal ellátott elem. Mivel a sorszámozás nullával indul, ez a negyedik.
← -- értékadás, például az említett S ← 0 azt jelenti, hogy az S nevű változóba kerüljön a 0 érték (a C#-ban: S = 0). Más esetben az egyik változóból kiolvasott értéket adod a másiknak, pl. C ← A[J] vagy A[I] ← A[J].
CVége, HVége, EVége -- Láthatólag ciklus-vége, ha-vége, eljárás-vége. A kérdésben szereplő FVége alighanem csakugyan feltétel-vége, vagyis a HVége értelmesebb változata.
Div -- vélhetőleg egészosztás, de példában nem látom nyomát.
Hasznosnak látom megemlíteni, hogy ez a fajta pszeudokód nem valami precízen kimunkált nyelv, amelynek gyémántból metszett szabályai előtt tehetelenül kell megtorpannod, ha nem bifláztad be az utolsó bötűig. Sokkal inkább a teendők könnyed elmesélése, az érthetőség kedvéért választott egyszerűsített és magyarított terefere. Többféle hasonló leírással megfogalmazható lenne ugyanez -- a lényeg, hogy azokat az elemeket ismerd, amelyeket be kell helyettesítened, akkor a többé-kevésbé ötletszerűen használt jelölések megértése nem jelenthet gondot.
Végezetül, egyetértek #12-vel a beszédes változóneveket illetőleg, normális nevek esetén a (pszeudo)kód jóformán kommentek nélkül is megmagyarázná saját magát.
#12
Igen. Köszi a megerősítést! Ez valójában egy buborék rendezés: [link]
#14: a kérdező által belinkelt képen egy minimumkiválasztó rendezés van, nem buborékrendezés.
A kiválasztó rendezésnél végigiterálunk a sorozat első és utolsó előtti elemei között, és összehasonlítjuk a sorozat összes rá következő elemeivel. Ha kisebbnek találjuk a sorozat bármelyik rá következő elemét, cseréljük.
A buborékrendezésnél végigiterálunk a sorozat első és - első kőrben az utolsó előtti, majd egyre csökkenő ütemben, legutoljára a 2. - elemei között és összehasonlítjuk a közvetlen szomszédjával. Ha az adott elem nagyobb mint a rá következő közvetlen szomszédja, cseréljük.
Ha a kérdező táncoslábú, talán az alábbi csatorna segít a megértésben:
https://www.youtube.com/user/AlgoRythmics/videos
a "select sort" a kiválasztó-, a "bubble sort" a buborékrendezés.
#16
Oké valóban nem buborékrendezés (elnéztem a ciklus feltételeket) de nem is min kiválasztás! Hol látsz te ott minimum kiválasztást? Mert én sehol. Ebből hiányzik az a lépés. Fölösleges cseréket csinál.
Ez egy valódi minimum kiválasztásos rendezés c# ban: pastebin(pont)com/cAi4KpMu
A legkisebbet az elejére rakja. A külső for következő futásakor már nem vizsgálja, nem piszkálja az első elemet, hiszen oda már bekerült a tömb legkisebb eleme. Megint a legkisebbet keresi, ami ezúttal már összességében a 2. legkisebb és megy a 2. helyre. A külső for 3. futásakor már nem vizsgálja, nem piszkálja ezt.
Ha jól értem az algoritmust, valami ilyesmi ez.
# 18
Az általad linkelt kódban is ott vannak a cserék, csak ebben az esetben generikus metódusról van szó, így double, float, long típusú elemekből álló tömbökön is működik, nemcsak int-eken.
Már ha jól értelmezem. A tévedés jogát fenntartom!
Egy kezdő számára nem könnyű egy ilyen kódot értelmezni az IComparable interface-szel együtt....
(((Én se tudom, miért nézegetek késő este ilyeneket, megszállottság, elhivatottság vagy para, hogy ha nem tanulok eleget, sohasem fogom kellő szinten elsajátítani. Vagy a 3 egyszerre megvan, csak az arány a kérdéses.)))
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!