Kihagyás

3.8. Lineáris keresés

A lineáris keresés algoritmusa egy adott tulajdonságú (vagy értékű) elemet keres egy sorozatban. A program addig vizsgálja az elemeket, amíg meg nem találja a keresett értéket, vagy amíg a tömb végére nem ér. Segítségével megtudhatjuk, hogy az adott elem szerepel-e a tömbben, és ha igen, hányadik indexen található.

30. feladat

Állítsunk elő véletlenszerűen 15 egész számot a [0, 50] tartományból, és írjuk ki a képernyőre 1 sorba! Keressük meg, hogy a 13-as szám szerepel-e a tömbben! Ha igen, írjuk ki az indexét (ha többször is szerepel, elég az első találat indexe). Ha nincs benne, írjuk ki, hogy "A keresett szám nincs a tömbben!" Név: Lineáris keresés

Megoldás:

static void Main(string[] args)
{
    int[] a = new int[15];
    int i = 0;
    bool van = false;
    Random vsz = new Random();

    for (i = 0; i < 15; i++)
    {
        a[i] = vsz.Next(51);
        Console.Write("{0,5}", a[i]);
    }

    i = 0;
    // A ciklus addig fut, amíg a tömb végére nem érünk, ÉS amíg meg nem találjuk
    while (van == false && i < 15)
    {
        if (a[i] == 13) 
        {
            van = true; // Ha megtaláltuk, a van változó true lesz, a ciklus leáll
        }
        else 
        {
            i++; // Csak akkor lépünk a következő indexre, ha még nem találtuk meg
        }
    }

    Console.WriteLine();

    if (van) 
    {
        Console.WriteLine(" A keresett szám (13) a(z) {0}. indexen található.", i);
    }
    else 
    {
        Console.WriteLine(" A keresett szám nincs a tömbben!");
    }

    Console.ReadKey();
}

A ciklus feltételében (van == false && i < 15) mindkét állításnak igaznak kell lennie a folytatáshoz. Amint a keresett számot megtaláljuk, a van értékét true-ra állítjuk. Emiatt a ciklus azonnal megszakad (hiszen a feltétel első fele hamissá válik), és az i változó nem nő tovább. Így az i pontosan a megtalált elem indexét fogja tárolni!