ࡱ> Root EntryRoot EntryB^$WxW0QW@(CompObjiOle persist elements" 4 !"#$%&'()*+,-./01236789:;<=>?@ABCDEFGHISfxPreview4,SfxDocumentInfo  _SummaryInformation( @StarBASICg8WWBasicManager2pw`w v4SfxWindows$-,DrawingLayer _ SfxStyleSheetspCwSwPageStyleSheets0 PW0PW @ $ws'StarWriterDocument-&ayer StandardQV Sheets5(9<P  !"#$%&()*+,-./0123456789:;<=>?@ABDEFGHIJKLMNOPQRSTUVWXYZ[\]^`abcdefghijklmnopqrstuvwxyz{|}~SW4HDR.$0(DC(364D(BUILD:1085)(SV364)]DAdrebuchADRESSEN!. Frameformat ZeichenformatTextformatvorlageStandard Textkrper  berschrift  berschrift 1Tabellen InhaltTabellen berschriftAbsender5 Quelltext Internet Link GrafikRoot 14 DrawObject 15 StarOffice 16Standard  Abbildung Tabelle Textdl01 j) stardiv.dicZ standard.dic FNT+$ Binre Suche in sortierter ListeT$Mittels binrer Suche in sortierten Listen kann das Finden bestimmter Werte massiv beschleunigt werden. Insbesondere, wenn die Suche wiederholt stattfinden muss und auch hufig erfolglos ist, lohnt sich diese Optimierung. Denn die erfolglose Suche ist das grsste Problem des sequentiellen Vorgehens: jeder einzelne Eintrag muss untersucht werden, wohingegen die binre Suche mit wenigen Zugriffen auskommt.T=$Das Demo-Programm fllt eine ListBox mit 4000 zuflligen Werten zwischen 0 und 10000. ber zwei Knpfe kann dann nach Wunsch sequentiell oder binr ein Wert gesucht werden. Anzahl und Wertebereich lassen sich im Programm ber die eingangs definierten Konstanten festlegen.A8 $ w TS$SA @A80o-:SA PA PT $T$ 4Letzte nderung: Copyright 1998 by Michael Hergerl: SAPAP<d<dd<A1PN(G../images/sologo.gifA PAPxAP<A PANPX*http://www.stardivision.de/_topCreated using StarOffice!A0 A38 &4mailto:mherger@jo-sac.chw#.JBHL-660BHL-660LPT1:winspoolBHL-660 |pc XXA4 ''''UU88y-?D7y-Ux,P¤Ux,?,hh,x,tT,x,W# ,Jx,m ,x,,x,:-Uf?<xP ZࡱSW4HDR.$0(D!. Frameformat ZeichenformatTextformatvorlageStandard Textkrper  berschrift  berschrift 1Tabellen InhaltTabellen berschriftAbsender5 Quelltext Internet Link GrafikRoot 14 DrawObject 15 StarOffice 16Standard  Abbildung Tabelle TextqStandardStandardd #'##0.00 CCC#'##0.00 CCC$ TT.MM.JJJJTT.MM.JJJJStandardStandardd #.##0,00 CCC#.##0,00 CCC TT.MM.JJJJTT.MM.JJJJ'StandardStandardd(' #'##0.00 CCC#'##0.00 CCC4' TT.MM.JJJJTT.MM.JJJJB$j~j~j~Pp 299 SAAP.AAPndnddnAPndndSAAP.AAPndnddnAPndndZࡱSWG, A<  #$%&'()*./0123456789:;<=>?@ABCDGHK  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFQRSTU 0 &!'@sX'8@ Courier New ArialXX$'"@dBsXX' @X'@#X'@BX+'$@bXA'2*@dxddxdXX7S;@X8S<@X9S=@XR'D@"X.rSvP$' '(l. . D . . . . . `#. '. 8,. 0. 5. |9. =. 6')2  Quelltext Quelltext@'5 Internet Link Internet Link@!''GrafikGrafik@;7S<8S=9S>> StandardStandard@ TextkrperStandard Textkrper@2A' berschriftStandard Textkrper@''2A'DR'  berschrift 1 berschrift Textkrper@'' Tabellen Inhalt TextkrperTabellen InhaltTabellen berschriftTabellen InhaltTabellen berschrift ''$+'AbsenderStandardAbsender@ 'DC(ࡱOXOutdevItemPool 1   )     &'()*+,-./06789:;UVWXYZ[\]c !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstt      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefd 0O P]EditEngineItemPool 6f 01 P?DrMd JoeMl0 0@ƹ$0+D$0{@ DrLy HellDrLy HeavenDrPg aa VCControls  -0} @Q @g@StandardX"@CommandButton1X @ @ @ @ @+@IMX@k X@P X@X @@X@X!@0 MS Sans SerifX@R X@qX@X&@Suche-Demo startenX##/@Standard.BinSearchDemo.MainX%% @88 @-;;D@y binsrch.sdwStandard.BinSearchDemo.MainX$:b Bd)Hg PJoeMy-DrML DrOb SDVC&M XM da##;;DrXXDControlsgg,$StandardDrXXMDࡱ> *2,max,688;748;100;568;570;12208;6705;0;0,1ࡱ44Standard LIBIMBEDDED LIBIMBEDDEDࡱOh+'0 h t 73@.&@J@ W@/cSMichael HergerMichael HergerSfxDocumentInfoMichael Herger 0ѫMichael Herger $0 D uK Info 0 Info 1 Info 2 Info 3 0ꩫI<ࡱ> 8:/1 ࡱ> ࡱ>  B^$WTextStarWriter 4.0soffSVGDI*.A X 88//NArialB NMS Sans Serif NArialB  9  Binre Suche in sortierter ListeNTimes New Roman NArialB NTimes New Roman  zMittels binrer Suche in sortierten Listen kann das Finden bestimmter Werte massiv beschleunigt werden. Insbesondere, wenn die Suche wiederholt stattfinden muss und auch hufig erfolglos ist, lohnt sich diese Optimierung. Denn die erfolglose Suche ist das grsste Problem des sequentiellen Vorgehens: jeder einzelne Eintrag muss untersucht werden, wohingegen die binre Suche mit wenigen Zugriffen auskommt. {Mittels binrer Suche in sortierten Listen kann das Finden bestimmter Werte massiv beschleunigt werden. Insbesondere, wenn die Suche wiederholt stattfinden muss und auch hufig erfolglos ist, lohnt sich diese Optimierung. Denn die erfolglose Suche ist das grsste Problem des sequentiellen Vorgehens: jeder einzelne Eintrag muss untersucht werden, wohingegen die binre Suche mit wenigen Zugriffen auskommt. uMittels binrer Suche in sortierten Listen kann das Finden bestimmter Werte massiv beschleunigt werden. Insbesondere, wenn die Suche wiederholt stattfinden muss und auch hufig erfolglos ist, lohnt sich diese Optimierung. Denn die erfolglose Suche ist das grsste Problem des sequentiellen Vorgehens: jeder einzelne Eintrag muss untersucht werden, wohingegen die binre Suche mit wenigen Zugriffen auskommt.  r%Mittels binrer Suche in sortierten Listen kann das Finden bestimmter Werte massiv beschleunigt werden. Insbesondere, wenn die Suche wiederholt stattfinden muss und auch hufig erfolglos ist, lohnt sich diese Optimierung. Denn die erfolglose Suche ist das grsste Problem des sequentiellen Vorgehens: jeder einzelne Eintrag muss untersucht werden, wohingegen die binre Suche mit wenigen Zugriffen auskommt. ) Das Demo-Programm fllt eine ListBox mit 4000 zuflligen Werten zwischen 0 und 10000. ber zwei Knpfe kann dann nach Wunsch sequentiell oder binr ein Wert gesucht werden. Anzahl und Wertebereich lassen sich im Programm ber die eingangs definierten Konstanten festlegen. ) Das Demo-Programm fllt eine ListBox mit 4000 zuflligen Werten zwischen 0 und 10000. ber zwei Knpfe kann dann nach Wunsch sequentiell oder binr ein Wert gesucht werden. Anzahl und Wertebereich lassen sich im Programm ber die eingangs definierten Konstanten festlegen.NCourier NewNTimes New Roman NCourier New ) Das Demo-Programm fllt eine ListBox mit 4000 zuflligen Werten zwischen 0 und 10000. ber zwei Knpfe kann dann nach Wunsch sequentiell oder binr ein Wert gesucht werden. Anzahl und Wertebereich lassen sich im Programm ber die eingangs definierten Konstanten festlegen.NTimes New Roman  )  $LDas Demo-Programm fllt eine ListBox mit 4000 zuflligen Werten zwischen 0 und 10000. ber zwei Knpfe kann dann nach Wunsch sequentiell oder binr ein Wert gesucht werden. Anzahl und Wertebereich lassen sich im Programm ber die eingangs definierten Konstanten festlegen. ) qtDas Demo-Programm fllt eine ListBox mit 4000 zuflligen Werten zwischen 0 und 10000. ber zwei Knpfe kann dann nach Wunsch sequentiell oder binr ein Wert gesucht werden. Anzahl und Wertebereich lassen sich im Programm ber die eingangs definierten Konstanten festlegen. ) *Das Demo-Programm fllt eine ListBox mit 4000 zuflligen Werten zwischen 0 und 10000. ber zwei Knpfe kann dann nach Wunsch sequentiell oder binr ein Wert gesucht werden. Anzahl und Wertebereich lassen sich im Programm ber die eingangs definierten Konstanten festlegen.NTimes New Roman NTimes New Roman NTimes New Roman  M G4Letzte nderung: Copyright 1998 by Michael Herger MG4Letzte nderung: Copyright 1998 by Michael Herger !G24.03.98 M d4Letzte nderung: Copyright 1998 by Michael Herger Md%4Letzte nderung: Copyright 1998 by Michael HergerNTimes New Roman NTimes New Roman NTimes New Roman  Md&4Letzte nderung: Copyright 1998 by Michael Herger88//G ZG ZV  V VKG  G GZKVKK ZGZZ NArialNArialNArialNTimes New Roman (88//ffBMF6(c$f̙ff33f3̙f̙f̙f3f3fff33333f3fff3fffff3                                                            ࡱ> ice.StarWriterDocument.49qࡱࡱ> SBX sb ( Standard StarBASICSBX ARSBX AR SBX ARCV e BinSrchDemoDlgDialog aM  VCControls   0> @X @  SortedListBinSrchDemoDlg SearchValueCommandButton2CommandButton1BinaryLabel1Init  FrameControl1  SequentiellXXX2XCXWXkXwXXX @ @ @ @1 @G@e X @ j@DX \ x XXXX&X.X6X>XF v@ S dx $ XXXX&X.X6X>XFXNF@ XXXX&X.R@i- AXXXX&X.X6 @=@X X@w X@ X@ X@ X@ X @ @'@ Se&quentiell &Schliessen&Initialisieren&Binr&Gesuchter Wert:Demonstration Binre SucheXX X1XFXRXhX@X j@NXXXX&X.X6X>XF @ @   @@X@X @@'XX@KX @e @{ @ @ @ @ @ @   @!! @+"" @A$$@]X%%@ %Standard.BinSearchDemo.InitSortedList%Standard.BinSearchDemo.Binary_Clicked*Standard.BinSearchDemo.Sequentiell_ClickedXXX?Xj&&@/ X''@O X((@o X))@ X**@ X++@ X,,@ X--@ X.. @) 22@E X33@e X44 @ 55 @ 66@ X99 @ ;;@  binsrch.sdw!Standard.BinSearchDemo.Dlg_OnLoad binsrch.sdw%Standard.BinSearchDemo.InitSortedList binsrch.sdw%Standard.BinSearchDemo.Binary_Clicked binsrch.sdw*Standard.BinSearchDemo.Sequentiell_ClickedXXJXX-$:Pf|*\r0F\-&<d4J`vHh ( H ^ ~ P a$$%%&&''(())**++,,--223366;;SBX AR SBX AR SBX ARCV z ListBoxtaSBX AR SBX AR SBX ARCV ~ TextBoxdaSBX AR SBX AR SBX ARCV n  CommandButtondaSBX AR SBX AR SBX ARCV n  CommandButtona%%&&''(())**++,,--;;SBX AR SBX AR SBX ARCV n  CommandButtona %%&&''(())**++,,--;;SBX AR SBX AR SBX ARCV v Label^aSBX AR SBX AR SBX ARCV n  CommandButtona%%&&''(())**++,,--;;SBX AR SBX AR SBX ARCV x  FrameControl:a  SBX AR SBX AR SBX ARSBX bm {  BinSearchDemoStarBASICModuleSBX ARSBX em%Main SBX emX BinarySearch SortedList @ SearchValueImSBX em/InitSortedList7FSBX em+ Dlg_OnLoad14SBX em/Binary_Clicked 9SBX em)NotFound,.SBX em4Sequentiell_Clicked)SBX AR SBX ARBMX MN BinSearchDemoSCl j ' ACHTUNG: MaxCount% darf 4096 nicht berschreiten! Const MaxCount% = 4000 ' maximale Anzahl Werte Const MaxValue% = 10000 ' hchster Wert Sub Main Randomize BinSrchDemoDlg.Show() BinSrchDemoDlg.Unload() End Sub Sub Binary_Clicked Dim Index% Index% = BinarySearch%(BinSrchDemoDlg.SortedList, BinSrchDemoDlg.SearchValue.Text) If Index% = -1 Then NotFound() Else BinSrchDemoDlg.SortedList.Selected(Index%) = True End If End Sub Sub Sequentiell_Clicked Dim Index% Application.EnterWait() For Index% = 0 To BinSrchDemoDlg.SortedList.ListCount() - 1 If BinSrchDemoDlg.SortedList.List(Index%) = BinSrchDemoDlg.SearchValue.Text Then Exit For End If Next Application.LeaveWait() If Index% = BinSrchDemoDlg.SortedList.ListCount() Then NotFound() Else BinSrchDemoDlg.SortedList.Selected(Index%) = True End If End Sub Sub NotFound() MsgBox("Der gesuchte Wert wurde nicht gefunden!", 48, "Erfolglose Suche!") End Sub Sub Dlg_OnLoad MsgBox("Die Liste wird nun mit " + MaxCount% + " Werten zwischen 0 und " + MaxValue% + " initialisiert", 64, "Initialisierung") InitSortedList() End Sub Sub InitSortedList Dim myProgress As New Progress Dim i% myProgress.Start("Liste wird initialisiert:", MaxCount%, True, True) BinSrchDemoDlg.SortedList.Clear() For i% = 1 to MaxCount% myProgress.Value = i% BinSrchDemoDlg.SortedList.AddItem(Int(Rnd * MaxValue%) Next myProgress.Stop() MsgBox("Die Eintrge sind nur zu Demo-Zwecken! Daher ist es auch egal, dass die numerischen Werte alphanumerisch sortiert sind...", 64, "Nicht erschrecken!") End Sub Function BinarySearch%(SortedList as Object, ByVal SearchValue$) Dim first% ' Zeiger auf ersten zu vergleichenden Eintrag Dim last% ' Zeiger auf letzten zu vergleichenden Eintrag Dim current% ' Zeiger auf aktuellen Eintrag first% = 0 last% = SortedList.ListCount - 1 Do While last% >= first% ' "mittleren" Wert des aktuellen Bereiches bestimmen current% = Fix((first% + last%) / 2) ' aktuellen mit gesuchtem Wert vergleichen Select Case StrComp(SearchValue$, SortedList.List(current%)) ' aktueller Wert zu gross: untere Grenze neu festlegen Case -1 last% = current% - 1 ' aktueller und gesuchter Wert stimmen berein Case 0 Exit Do ' aktueller Wert zu klein: obere Grenze neu festlegen Case 1 first% = current% + 1 End Select Loop If last% < first% Then ' nix gefunden BinarySearch% = -1 Else ' Index des gefundenen Wertes zurckgeben BinarySearch% = current% End If End Function PC8E      +       BGE    +    B  BB%K?    G6E?!&E"  $   Gz%E'    )+,-AB0A.+12ABAB'AB@A 3!4+78# # #"9$;# A%B  & < ) >$BBB%K?# * $@ +B',- A&EtC# . EA/B@A0F+IJ1K2L3N1BO2  BQ21 GS312B4V 3 5'Y BEZ 23BE] BE^ EEa BEb 13BE(dE4f21 G"hBE2k3m+STm5 !05<KQ\hmz*BZiycv|MaxCountMaxValueMainRandomizeBinSrchDemoDlgShowUnloadBinary_ClickedIndexSortedListSearchValueTextBinarySearchPAR2PAR3NotFoundSelectedTrueSequentiell_ClickedApplicationEnterWaitListCountListLeaveWaitDer gesuchte Wert wurde nicht gefunden!Erfolglose Suche!MsgBoxDlg_OnLoadDie Liste wird nun mit Werten zwischen 0 und initialisiertInitialisierungInitSortedListProgressmyProgressiListe wird initialisiert:StartPAR4PAR5ClearValueRndIntAddItemStopDie Eintrge sind nur zu Demo-Zwecken! Daher ist es auch egal, dass die numerischen Werte alphanumerisch sortiert sind...Nicht erschrecken!firstlastcurrentFixStrComp2c%bqqࡱ>