Hallo alle zusammen.
Ich habe eine Frage bezüglich dieses Quellcodes hier.
static void Main(string[] args)
{
int[] Reihe = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // Anlegen eines Arrays
int max; // Bestimmung der Variablen
int min;
int mid;
int Zahl;
bool erfolgreich = false;
min = 0;
max = Reihe[9];
foreach(int write in Reihe) // Ausgabe der vorhandenen Zahlen
{
Console.WriteLine(write);
}
Console.WriteLine("Geben Sie Ihre Zahl ein, damit wir überprüfen können, ob diese im System hinterlegt ist."); // Abfrage der gesuchten Zahl
Zahl = Convert.ToInt32(Console.ReadLine());
while (min <= max) // Mittelwert ermitteln
{
mid = (min + max) / 2;
mid = Reihe[mid];
if (mid < Zahl) // Wenn gesuchte Zahl größer als der Mittelwert, befindet sich der Wert in der rechten Hälfte
{
min = mid + 1;
}
if (mid > Zahl) // Wenn gesuchte Zahl kleiner als der Mittewert, befindet sich der Wert in der linken Hälfte
{
max = mid - 1;
}
if (mid == Zahl) // Wenn gesuchte Zahl gleich dem Mittelwert = Suche erfolgreich
{
erfolgreich = true;
break;
}
}
if (erfolgreich == true) // Ausgabe, ob die Zahl gefunden wurde oder nicht
{
Console.WriteLine("Ihre Zahl, die Sie eingegeben haben, ist im System hinterlegt.");
Console.ReadLine();
}
else
{
Console.WriteLine("Ihre Zahl, die Sie eingegeben haben, ist NICHT im System hinterlegt.");
Console.ReadLine();
}
Und zwar möchte ich ein Programm schreiben, welches eine binäre Suche in einem Programm durchführt. Aber ich bekomme es nicht genau hin.
Die Funktion soll sein, dass, wenn ich das Programm starte eine Abfrage kommt, wo man dann eine gewünschte Zahl eingibt und danach Bescheid bekommt, ob diese in der Reihe vorhanden ist.
Wenn ich dort eine falsche Zahl eingebe, die nicht in der Reihe ist, kommt eine Fehlermeldung. Außerdem klappt das Programm wirklich nur, wenn im Array {1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } steht. Aber hier hätte ich auch gerne andere Werte.
Danke im Voraus.
MfG