001
28.04.2005, 12:29 Uhr
doppler
|
Was mir erstmal auffällt ist, dass du nur einmal abfragst, ob array_[mid]!=x ist. Das sollte wohl in eine Schleife:
C++: |
while (array_[mid] != x) {
}
|
Weiterhin wird mid nie verändert, weil das else if (first>=mid) nie betreten wird. Der Grund ist, dass du innerhalb von if (array_[mid]!=x) bist und die Fälle array_[mid]>x und array_[mid]<x schon behandelt hast. Da gibt es keine andere Möglichkeit mehr. Statt else if (first >= mid) sollte es also besser if (first >= mid) heißen.
Mir ist auch nicht klar, warum man überhaupt abfragen muss, ob first >= mid ist. Ich dachte, dass man mid immer aktualisiert.
Ansonsten gibt es für soetwas auch schon fertige Algorithmen in der STL (find() oder find_if()). Siehe z.B. www.math.uni-wuppertal.de/~axel/skripte/oop/oop20_7.html Dieser Post wurde am 28.04.2005 um 14:16 Uhr von FloSoft editiert. |