Platinum - Fr 01.05.09 10:02
Titel: Problem bei Binärer Suche
Guten morgen miteinander ;)
Ich möchte eine Binäre Suche Programmieren, die mir gleichzeitig den kleinsten Index der gesuchten Zahl ausgibt (d.h. an wievielter Position die gesuchte Zahl steht). Im Prinzip sollte es funktionieren, aber irgendwie findet der Algorithmus meine Zahl manchmal nicht, obwohl sie vorhanden ist :(
Kann jemand über meinen Code fliegen und ggf. den Fehler zeigen ? Ich kopier den zur Sicherheit mal zusammen mit den deklarationen,so könnt ihr ihn einfach einfach Copy&pasten und selber ausprobieren :)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| Var a:array[1..10] of integer; x,mi:integer; l,r:extended; gefunden:boolean;
begin
x:=7; l:=1; r:=10; gefunden:=false;
for mi:= 1 to TRUNC(r) do begin randomize; a[mi]:=random(10)+1; writeln(mi,'.) ', a[mi]); end;
while l<=r do begin i:=i+1; mi:=(TRUNC((l+r)/2)); if x<a[mi] then r:=mi-1 else l:=mi+1; end;
if x=a[mi] then begin writeln('Die gesucht Zahl ist vorhanden und befindet sich an der ',mi,' ten Stelle.'); writeln('Die gesuchte Zahl lautet: ',x); gefunden:=true; end; if gefunden=false then writeln('Zahl ist nicht vorhanden'); |
Vielen Dank im vorraus :)