Tehetséggondozás az informatikában

Az eldöntés, kiválasztás, keresés tétele

Ez a három feladat tulajdonképpen együtt tárgyalható, mert a keresés tételében az eldöntés és a kiválasztás tétele is benne van.

Eldöntés tétele: Egy n elemű a sorozatban van-e T tulajdonságú elem?

Kiválasztás tétele: Tudjuk, hogy a sorozatban van T tulajdonságú elem, adjuk meg a sorszámát!

Lineáris keresés

Ha egy sorozatban van T tulajdonságú elem, akkor adjuk meg a sorszámát! Ha több T tulajdonságú elem van, akkor az egyik sorszámát kell megadni.

Az algoritmus az első T tulajdonságú elemet találja meg, ha van ilyen.

eljárás lineáris_keresés (n, a)
i := 1
ciklus amíg i <= n és a[i] nem T tulajdonságú
	i := i+1
ciklus vége
van := (i<=n)
ha (i<=n) akkor
	sorsz := i
eljárás vége
A lineáris keresés tételét megvalósíthatjuk egy egyszerűbb ciklussal is, amely végigvizsgálja a sorozat minden elemét, és az utolsó T tulajdonságú elem sorszámát adja meg, ha van ilyen. Ezt a változatot azért szokták sokszor használni, mert nincs benne összetett ciklusfeltétel, bár kevésbé hatékony (a vizsgálatok száma n az eredeti átlagos n/2 érték helyett).
eljárás keresés (n, a)
van := hamis
ciklus i := 1-től n-ig
	ha a[i] T tulajdonságú akkor 
		van := igaz
		sorsz := i
	elágazás vége
ciklus vége
eljárás vége
A táblázatkezelő programban a keresést a keresőfüggvények segítségével végezhetjük el.
HOL.VAN(keresési_érték;tábla; egyezés_típus)
A függvény a keresési érték tömbben elfoglalt relatív pozícióját adja vissza, amely megadott értékkel megadott módon egyezik. Ha az egyezés_típus értéke 0, akkor a HOL.VAN az első olyan értéket keresi meg, amely pontosan egyenlő a keresési_értékkel. Ha az egyezés_típus értéke 1, akkor a HOL.VAN azt a legnagyobb értéket keresi meg, amely egyenlő vagy kisebb, mint a keresési_érték. A táblának emelkedő sorrendbe rendezettnek kell lennie. Ha az egyezés_típus értéke -1, akkor a HOL.VAN azt a legkisebb értéket keresi meg, amely egyenlő vagy nagyobb, mint a keresési_érték. A táblának csökkenő sorrendben rendezettnek kell lennie. Ha az egyezés_típus argumentumot nem adjuk meg, akkor feltételezett értéke 1.
INDEX(tömb;sor_szám;oszlop_szám) 
Táblázat (tömb) azon elemének értékét adja vissza, amelyet a sorszám és oszlopszám mint index meghatároz. Ha a tömb egyetlen sorból vagy oszlopból áll, akkor a megfelelő sor_szám, illetve oszlop_szám argumentum elhagyható.
FKERES(keresési_érték;tábla; oszlop_szám;tartományban_keres)
A függvény egy tömb bal szélső oszlopában keres egy megadott értéket, és az így kapott sorból veszi az oszlop_szám argumentummal kijelölt cellát, és ennek tartalmát adja eredményül. A függvény negyedik paramétere logikai típusú, amellyel az FKERES függvény pontos vagy közelítő keresését adhatjuk meg. Ha az argumentum értéke HAMIS, akkor az FKERES pontos egyezést keres, és ha ilyen nincs, akkor a #HIÁNYZIK hibaértéket adja eredményül. Ha értéke IGAZ (vagy nem adjuk meg), akkor a visszaadott érték közelítő lehet, azaz ha pontos egyezést nem talált a függvény, akkor a következő legnagyobb, de a keresési_érték argumentumnál kisebb értéket adja vissza. Ebben az esetben a tábla első oszlopában lévő értékeknek növekvő sorrendben kell elhelyezkedniük, mert különben az FKERES hibás eredményt adhat.
VKERES(keresési_érték;tábla; sor_szám;tartományban_keres)
A megadott tömb felső sorában adott értékű elemet keres, majd a megtalált elem oszlopából az adott sorban elhelyezkedő értékkel tér vissza. A függvény harmadik (logikai típusú) paraméterével lehet jelezni, hogy rendezett-e a keresési vektor. (Lásd FKERES)

A keresett érték sorszámát a HOL.VAN függvény adja vissza. Az INDEX(…HOL.VAN(…)), FKERES és VKERES függvények a megadott sorszámhoz tartozó értéket keresik ki a tábla egy másik oszlopából, azaz további feladatot is megoldanak. Ha nem pontos, hanem közelítő értéket keresünk, akkor a sorozatnak, amelyben keresünk, rendezettnek kell lennie.