Heim php教程 PHP开发 Einführung in die binäre Suche

Einführung in die binäre Suche

Dec 19, 2016 pm 04:29 PM

Binäre Suche

Heute sprechen wir über „Binäre Suche“. Die Idee der binären Suche besteht darin, jedes Mal die Größe eines bestimmten Arrays in einem sequentiellen Array zu vergleichen. Der Nachteil der binären Suche besteht darin, dass das Array sequentiell sein muss (ich nehme als Beispiel die von klein nach groß sortierten Daten). Der Vorteil besteht darin, dass die Abfrageeffizienz extrem hoch ist und die Zeitkomplexität log2n beträgt. Je häufiger diese Suchmethode in Big Data eingesetzt wird, desto deutlicher wird der Effekt. Der Quellcode und der Unit-Test sind unten angehängt. Der Quellcode enthält zwei Algorithmen, einer ist eine Schleife und der andere ist rekursiv. Bitte beachten Sie:
Quellcode:

///


/// Verwenden Sie die binäre Methode, um den Ort eines Datenproblems zu finden. (Rekursive Methode)
/// Das Array muss von klein nach groß sortiert werden. Wenn es sich um unsortierte Daten handelt, können Sie verwenden = „StraightInsertionSort“/> Klasse zum Sortieren.
/// Wenn der zu findende Wert nicht im Array vorhanden ist, geben Sie -1 zurück.
/// & lt;//summary & gt; //// & lt; param name = "array" & lt;/param & gt; lt; "value" & gt; Der zu findende Wert
/// Gibt die Zahl zurück, wenn der zu findende Wert nicht im Array existiert, wird -1 Public static int Search(int [] array, int value)
                                                                                        ) { return array.Length - 1; }
return Search(array, 0, array.Length - 1, value);
}
private static int Search(int[] array, int beginIndex, int endIndex, int value)
int middle = (beginIndex + endIndex) / 2;
if (endIndex == beginIndex)
{ return array[beginIndex] == value ? beginIndex : -1 ; }
else if (endIndex == beginIndex + 1)
                                                             y[endIndex] == value ) { return beginIndex; }                                                                                                                                       sonst wenn ( array[mitte ; (Schleifenmethode)
/// Das Array muss von klein nach groß sortiert werden. Wenn es sich um unsortierte Daten handelt, können Sie die Klasse verwenden cref= "StraightInsertionSort"/> Klasse zum Sortieren.
/// Wenn der zu findende Wert nicht im Array vorhanden ist, geben Sie -1 zurück.
/// & lt;//summary & gt; //// & lt; param name = "array" & lt;/param & gt; lt; "value" & gt; Der zu findende Wert
/// Gibt die Zahl zurück, die im Array nicht vorhanden ist ;
Public static int Search2(int [] array, int value)
int beginIndex = 0;
int endIndex = array.Length - 1;
while (true)
​ ​ ​​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ <= 1)
                                                                                                                                                                         ​🎜>                                                                                                      -1; }
                                                                                                                                                                                  if (value < array[middle]) { endIndex = middle; }
               if (value == array[middle]) { return middle; }
               if (value > array[middle]) { beginIndex = middle; }
           🎜>       void SearchTest()
{

           Random random = new Random();

           int[] array2 = new int[100];
           for (int i = 0; i < 100; i++)
           {
array2[i] = random.Next(0, 1000);
           }
           int[] array3 = BitmapSort.Sort(array2);
           for (int i = 0; i < array3.Length; i++)
           {
               Assert.AreEqual(BinarySearch.Search(array3, array3[i]), i);
               Assert.AreEqual(BinarySearch.Search2(array3, array3[i]), i);
           }
           Assert.AreEqual(BinarySearch.Search(array3, 9999), -1);
           Assert.AreEqual(BinarySearch.Search2(array3, 9999), -1);
 }





更多二分法查找介绍相关文章请关注PHP中文网!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)