Suchalgorythmus

Hi

Ich habe über die Jahre den optimalen verschwitzt.
Mein Modell hat einen kleinen Haken, nämlich dann wenn der gesuchte Begriff nicht gefunden wird oder die Sprungmarke ende-1 erreicht.
Wäre super wenn Ihr meinen Denkfehler findet oder einen passenden Link dazu habt.

Suchen muß ich allerdings nach „Matchcodes“ (String)
danke vorab, ciao

anf = 0
ende = 30000001
mitt = anf
suche = Val(InputBox(„Nach welcher Zahl suchen ?“, „Zahl suchen“, „2“))
If suche > 30000000 Then MsgBox „Zahl zu groß“: Exit Sub
While mitt suche
While mitt suche And mitt > anf
ende = mitt
mitt = (mitt - (ende - anf) \ 2) - 1
Wend
Wend

irgendwann läuft Dein mitt aus dem Integer-Bereich und dann ist Essig mit mittsuche, daher

 Dim anf, ende, mitt, suche, zaehler **As Integer**
 anf = 0
 ende = 30000001
 mitt = anf
 zaehler = 0

 suche = Val(InputBox("Nach welcher Zahl suchen ?", "Zahl suchen", "2"))

 If suche \>= ende Then MsgBox "Zahl zu groß": Exit Sub

 While mitt suche
 mitt = (anf + ende) / 2

 If (suche Gruß
Christian



> Suchen muß ich allerdings nach "Matchcodes" (String)

das ist aber Äppel mit Birnen, bei _Matchcodes_ ist die Suche ja ganz anders aufgebaut, denn hier hast Du bspw. den Platzhalter ? oder \* sowie die Option, dass kein Ergebnis in der Liste zu finden ist.

sämtliche variablen sind als SINGLE deklariert, und ich erreiche auch den gewünschten erfolg wenn alle felder gefüllt sind.
mein problem ist aber das wenn der suchtext (oder auch zahl) nicht vorhanden ist das programm dann in eine endlosschleife läuft :frowning:
wenigstens habe ich damit eine akzeptable annäherung.

werde ich einfach weiter tüfteln
ciao

mein problem ist aber das wenn der suchtext (oder auch zahl)
nicht vorhanden ist das programm dann in eine endlosschleife
läuft :frowning:

While (mitt suche) And (ende - anf \> 1)

damit könnte es funktionieren

While (mitt suche) And (ende - anf > 1)

danke für tip
ciao