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!