Tusjak óra (2024. 12. 12.)
This commit is contained in:
parent
7dfc64af74
commit
3a9c0ff7c4
|
@ -0,0 +1,20 @@
|
||||||
|
Bináris keresés
|
||||||
|
A bináris - más néven logaritmikus vagy felező módszer - mivel n elem esetén log(n) futási idővel rendelkezik. A bináris keresés egy erősen optimalizált keresési eljárás, amely csak rendezett adatsoron alkalmazható. Például, amikor egy nyomtatott szótárban keresünk egy szót vagy jelenléti íven keressük a nevünket. A keresett értéket egy mintaadattal összehasonlítjuk és az eredménytől függően - amennyire lehet - egy nagy részt kizárunk a tartományból.
|
||||||
|
|
||||||
|
A módszer külön implementációt C# esetén nem igényel, mivel beépítetten az Array osztály és a List osztály is tartalmaz bináris keresést megvalósító metódust:
|
||||||
|
int ondex = Array.BinarySearch()
|
||||||
|
|
||||||
|
|
||||||
|
Buborékrendezés
|
||||||
|
Az algoritmus a nevét onnan kapta, hogy hasonlóan ahhoz, ahogy, a pezsgőpohárban szállnak felfelé a buboréknak, a rendezés során is minden egyes menetben a fennmaradó elemek közül a legnagyobbat "áramoltatjuk fel" a tömbszelet végére, tetejére.
|
||||||
|
|
||||||
|
A rendezés során a tömb a fennmaradó részén végighaladva az egymás utáni szomszédos elemeket összehasonlítjuk, és ha szükséges, megcseréljük őket, hogy közülük mindig a nagyobb helyezkedjen el feljebb. Ezt a műveletet aztán a tömbön feljebb lépve addig ismételjük, amíg a fennmaradó rész végéhez nem érünk. A műveletsor végén a rendezetlen rész tetejére mindig a legnagyobb érték kerül majd fel, amelyet a következő menetben már nem veszünk figyelembe. A ciklust egészen addig ismételjük, amíg meg nem találjuk a kívánt elemet.
|
||||||
|
|
||||||
|
CIKLUS i = 6-tól 1-ig
|
||||||
|
CIKLUS j = 0-tól i-1-ig
|
||||||
|
HA a[j] > a[j+1] AKKOR
|
||||||
|
csere a[j] a[j+1]
|
||||||
|
|
||||||
|
Az algoritmus futási ideje javítható, ha megfigyeljük, hogy a külső ciklusnak csak akkor érdemes tovább futnia, ha a belső cuklusban volt csere. Erre bevezethetunk egy logikai változót.
|
||||||
|
|
||||||
|
A javított algoritmus futási ideje legjobb esetben lináris lesz, legrosszabb esetben pedig négyzetes.
|
Loading…
Reference in New Issue
Block a user