Probleme mit binärer Suche
-
Hi Leute, ich habe mal versucht den Algorithmus der binären Such in einem C++ - Programm zu implementieren, doch ich habe da ein Problem. Immer wenn ich aus dem Array das erste Element wähle, dann stecke ich auf einmal in einer endlos-schleife fest. Ich poste mal hier mein programm, vielleicht kann mir da jemand helfen
[cpp]
#include <iostream.h>int main()
{
int array[10] = {1,5,9,34,56,78,234,654,721,1023};
bool found = 0;
int l = 0, r = 10, m = 0;
int x;
int i;for (i=0; i<=9; i++)
{
cout << array[i] << " ";
}//nun beginnt die binäre Suche
cout << endl << "Welche Zahl soll gesucht werden? ";
cin >> x;while (l < r)
{
m = (l+r) / 2;
if (array[m] == x)
{
found = 1;
cout << "Fundstelle: " << m+1 << endl;
}else if (array[m] > x)
{
r = m - 1;
}else
{
l = m + 1;
}
}if (found == 0)
{
cout << "Die Zahl befindet sich nicht im Array!" << endl;
}return 0;
}Ach ja und kann mir jemand sagen wie ich es schaffe das in c++ das array nicht mit dem index 0 anfängt, sondern mit dem index 1?
Thx für alle antworten
-
ich möchte mich für diese schlampige notation entschuldigen, aber ich habe es noch nie verstanden forenbeiträge gut zu gestalten
-
Dann geb ich dir mal den ersten Tipp: Editier deinen Beitrag so, dass die Code-Tags funktionieren.
-
Dafür musst du lediglich ein [/cpp] nach deinem Code machen.
-
Dravothrak schrieb:
dann stecke ich auf einmal in einer endlos-schleife fest.
IMHO müsste entweder die Abbruchbedingung der while-Schleife lauten (l < r && !found) oder du müsstest l=r=m setzen, wenn das Element gefunden wurde.
Ach ja und kann mir jemand sagen wie ich es schaffe das in c++ das array nicht mit dem index 0 anfängt, sondern mit dem index 1?
Gar nicht. Es geht natürlich, wenn man ein Array mit einem Element mehr anlegt und dann mit einem Zeiger auf der Element 1 arbeitet, aber das macht niemand. Find dich einfach damit ab, dass C != Pascal