Thema Datum  Von Nutzer Rating
Antwort
24.09.2007 22:00:58 Chris
NotSolved
Blau Aw:Binäre Suche
26.09.2007 02:16:33 jh
NotSolved
26.09.2007 02:21:05 jh
NotSolved
26.09.2007 02:27:40 jh
NotSolved
26.09.2007 09:04:30 Chris
NotSolved
24.10.2012 09:20:31 Gast79116
NotSolved

Ansicht des Beitrags:
Von:
jh
Datum:
26.09.2007 02:16:33
Views:
2240
Rating: Antwort:
  Ja
Thema:
Aw:Binäre Suche
Hallo,

sorry, aber in deinem Code sind eine Menge Fehler. Unten eine korrigierte Version, Fehlerzeilen sind auskommentiert, Erläuterungen siehe Kommentare.
Letzte Bemerkung: Wozu soll das gut sein, als Programmierübung? Zum Suchen gibt es in Excel die Find-Methode.

Gruß

Option Explicit
' sollte immer am Anfang stehen

Public Function fxSucheBin(x As Long, ByVal anfang As Long, _
ByVal ende As Long) As Long
' Function fxSucheBin(x, anfang, ende)
' auf exakte Typdeklaration achten!
' Dim SucheErfolgreich As Boolean
' wird für Do-Loop-Schleife nicht benötigt
' Dim mitte As Integer
' Integerwerte sind vorzeichenbehaftet, Fehler, wenn > 32766
Dim mitte As Long
' SucheErfolgreich = False
fxSucheBin = 0
' Defaultwert setzen
Do
' While-Wend-Schleife existiert nur noch zwecks
' Abwärtskompatibilität, besser Do-Loop verwenden
' While ((SucheErfolgreich = False) & (anfang 256)
' SucheErfolgreich = True
fxSucheBin = mitte
Exit Do
Else
If Cells(mitte, 1) < x Then ' vorwärts weitersuchen
' If Cells(1, mitte) < x Then
' wieder Zeile/Spalte vertauscht
anfang = mitte ' neuen Anfangswert setzen
' fxSucheBin = fxSucheBin(x, 1, (mitte - 1))
' rekursiver Aufruf führt zu Stapelüberlauf!
Else
' rückwärts weitersuchen
ende = mitte ' neuen Endwert setzen
' fxSucheBin = fxSucheBin(x, (mitte + 1), 65000)
' rekursiver Aufruf führt zu Stapelüberlauf!
End If
End If
' Wend
Loop Until ende - anfang <= 1
' Abbruchbedingung, wenn Suchwert nicht gefunden
End Function


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
24.09.2007 22:00:58 Chris
NotSolved
Blau Aw:Binäre Suche
26.09.2007 02:16:33 jh
NotSolved
26.09.2007 02:21:05 jh
NotSolved
26.09.2007 02:27:40 jh
NotSolved
26.09.2007 09:04:30 Chris
NotSolved
24.10.2012 09:20:31 Gast79116
NotSolved