diff --git a/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 12. 12.txt b/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 12. 12.txt new file mode 100644 index 0000000..2fd5da9 --- /dev/null +++ b/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 12. 12.txt @@ -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. \ No newline at end of file