<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wiki.stne.net/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://wiki.stne.net/index.php?feed=atom&amp;target=Newacct&amp;title=Spezial%3ABeitr%C3%A4ge%2FNewacct</id>
		<title>STNE-Wiki - Benutzerbeiträge [de]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.stne.net/index.php?feed=atom&amp;target=Newacct&amp;title=Spezial%3ABeitr%C3%A4ge%2FNewacct"/>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Spezial:Beitr%C3%A4ge/Newacct"/>
		<updated>2026-05-23T23:40:01Z</updated>
		<subtitle>Aus STNE-Wiki</subtitle>
		<generator>MediaWiki 1.16.0</generator>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:BinarySearch</id>
		<title>Scripting:BinarySearch</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:BinarySearch"/>
				<updated>2011-04-21T18:38:05Z</updated>
		
		<summary type="html">&lt;p&gt;Newacct: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
&lt;br /&gt;
=Der BinarySearch=&lt;br /&gt;
&lt;br /&gt;
Er wird verwendet um sortierte Arrays (z.B. mit [[Scripting:BubbleSort|BubbleSort]] vorsortiert) nach einer Zahl zu durchsuchen.&lt;br /&gt;
BinarySearch ist erheblich schneller wie ein Linearer Search, spart Ressourcen sowie Rechen- und Ausführungszeit.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;ACHTUNG!!!&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; Diese Funktion ist mit &amp;lt;u&amp;gt;&amp;lt;b&amp;gt;array.binarysearch()&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; unnötig geworden! Bitte den Algorythmus wegen Performancegründen &amp;lt;b&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;NICHT&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt; auf Dauer nutzen und &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;nur für Lehrzwecke&amp;lt;/u&amp;gt;&amp;lt;/b&amp;gt; einsetzten!&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Der Search ist so programmiert, dass der Array nicht kopiert werden muß, sondern lediglich ein Speicherverweis dazu hergestellt wird. Das Array, welches als Quelle dient, wird dabei nicht verändert.&lt;br /&gt;
&lt;br /&gt;
==Die Syntax==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;BinarySearch&amp;lt;/b&amp;gt; wird ganz einfach als &amp;lt;b&amp;gt;Methode&amp;lt;/b&amp;gt; aufgerufen:&lt;br /&gt;
&lt;br /&gt;
   BinarySearch(Verwendetes-Array,Länge-des-Array,Gesuchte-Zahl,SpeicherVariable);&lt;br /&gt;
&lt;br /&gt;
Die Methode ist &amp;lt;b&amp;gt;VOID&amp;lt;/b&amp;gt; da eine andere Umsetzung zum Entwicklungszeitpunkt (Version 0.1 Pre Alpha) nocht nicht zur Verfügung stand!&lt;br /&gt;
&lt;br /&gt;
In der Variablen &amp;lt;b&amp;gt;SpeicherVariable&amp;lt;/b&amp;gt; wird das Ergebnis, ein Wert &amp;lt;b&amp;gt;zwischen 0 und Länge-des-Array&amp;lt;/b&amp;gt;, gespeichert.&amp;lt;br&amp;gt;&lt;br /&gt;
Sollte die gesuchte Zahl &amp;lt;b&amp;gt;nicht gefunden&amp;lt;/b&amp;gt; werden, ist &amp;lt;b&amp;gt;SpeicherVariable&amp;lt;/b&amp;gt; nach der Verarbeitung &amp;lt;b&amp;gt;-1&amp;lt;/b&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Hinweis:&amp;lt;/b&amp;gt; Es wurde ein Workarround benötigt, da das Vergleichen der Ausdrücke zum Entwicklungszeitpunkt nur einzeln und mit &amp;lt;b&amp;gt;&amp;quot;&amp;lt;&amp;quot;&amp;lt;/b&amp;gt; sowie &amp;lt;b&amp;gt;&amp;quot;&amp;gt;&amp;quot;&amp;lt;/b&amp;gt; möglich war!&lt;br /&gt;
&lt;br /&gt;
==Der Algorythmus==&lt;br /&gt;
&lt;br /&gt;
Der ganze Algorythmus ist als Methode verwirklicht worden. Dies ermöglicht die unveränderte übernahme des Quellcodes, siehe unten.&lt;br /&gt;
&lt;br /&gt;
 function BinarySearch(ByRef a as array, aSe as integer) as integer {&lt;br /&gt;
   var aG as integer;&lt;br /&gt;
   var p1 as integer=0;&lt;br /&gt;
   var p2 as integer = a.Length;&lt;br /&gt;
 &lt;br /&gt;
   While(p1&amp;lt;p2){&lt;br /&gt;
     aG=(p1+p2)/2;&lt;br /&gt;
     if(a[aG]&amp;lt;aSe){p1=aG+1;}&lt;br /&gt;
     if(a[aG]&amp;gt;aSe){p2=aG;}&lt;br /&gt;
     if(a[aG]=aSe){return aG}&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   return -1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Der ultimative Test==&lt;br /&gt;
&lt;br /&gt;
Um den Suchalgorythmus zu testen, könnt ihr beispielsweise folgendes schreiben:&lt;br /&gt;
&lt;br /&gt;
 var arr[] as integer = { 2, 9, 14, 16, 39, 48, 52, 70, 89, 94 };&lt;br /&gt;
 var aSearch as integer = 29;&lt;br /&gt;
 var aGoal as integer = 0;&lt;br /&gt;
 &lt;br /&gt;
 WriteLine(' ');&lt;br /&gt;
 &lt;br /&gt;
 WriteLine('Suche nach Zahl ' &amp;amp; aSearch &amp;amp; '...');&lt;br /&gt;
 aGoal = BinarySearch(arr, aSearch);&lt;br /&gt;
 &lt;br /&gt;
 if(aGoal&amp;lt;0){&lt;br /&gt;
   WriteLine('Die gesuchte Zahl ' &amp;amp; aSearch &amp;amp; ' befindet sich nicht im angegebenen Array!');&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
   WriteLine('Die gesuchte Zahl ' &amp;amp; aSearch &amp;amp; ' befindet sich an Position ' &amp;amp; aGoal &amp;amp; '!');&lt;br /&gt;
 }&lt;br /&gt;
 WriteLine(' ');   &lt;br /&gt;
 &lt;br /&gt;
 aSearch = 39&lt;br /&gt;
 &lt;br /&gt;
 WriteLine('Suche nach Zahl ' &amp;amp; aSearch &amp;amp; '...');&lt;br /&gt;
 aGoal = BinarySearch(arr, aSearch);&lt;br /&gt;
 &lt;br /&gt;
 if(aGoal&amp;lt;0){&lt;br /&gt;
   WriteLine('Die gesuchte Zahl befindet sich nicht im angegebenen Array!');&lt;br /&gt;
 }&lt;br /&gt;
 else {&lt;br /&gt;
   WriteLine('Die gesuchte Zahl ' &amp;amp; aSearch &amp;amp; ' befindet sich an Position ' &amp;amp; aGoal &amp;amp; '!');&lt;br /&gt;
 }&lt;br /&gt;
 WriteLine(' ');&lt;br /&gt;
&lt;br /&gt;
==Der Erfolg==&lt;br /&gt;
&lt;br /&gt;
   Script gestartet.&lt;br /&gt;
   &lt;br /&gt;
   Suche nach Zahl 29...&lt;br /&gt;
   Die gesuchte Zahl 29 befindet sich nicht im angegebenen Array!&lt;br /&gt;
   &lt;br /&gt;
   Suche nach Zahl 39...&lt;br /&gt;
   Die gesuchte Zahl 39 befindet sich an Position 4!&lt;br /&gt;
   &lt;br /&gt;
   Script beendet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Anmerkung:&amp;lt;/b&amp;gt; &amp;quot;Position 4&amp;quot; bedeutet natürlich Zahl 5, da für ein Array die Zahl 0 auch relevant ist. Es wird also ab 0 und nicht von 1 weg gezählt!&lt;br /&gt;
&lt;br /&gt;
Viel Spaß mit BinarySearch!&lt;br /&gt;
&lt;br /&gt;
MFG Proximo&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Kategorie:Methoden|BinarySearch]]&lt;/div&gt;</summary>
		<author><name>Newacct</name></author>	</entry>

	</feed>