Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Erklärung der Javascript-Half-search_javascript-Fähigkeiten

WBOY
Freigeben: 2016-05-16 16:17:59
Original
1822 Leute haben es durchsucht

Halbe Suchmethode:

In einer geordneten Liste treten beim Vergleich des zu durchsuchenden Datenwerts mit dem mittleren Elementwert des Suchbereichs drei Situationen auf:

1) Wenn der zu findende Datenwert genau dem mittleren Elementwert entspricht, wird der Index des mittleren Elementwerts zurückgegeben.

2) Wenn der Wert der zu durchsuchenden Daten kleiner als der mittlere Elementwert ist, wird die erste Hälfte des gesamten Suchbereichs als neuer Suchbereich verwendet und 1) wird ausgeführt, bis ein gleicher Wert erreicht ist gefunden.

3) Wenn der Wert der zu durchsuchenden Daten größer als der mittlere Elementwert ist, wird die zweite Hälfte des gesamten Suchbereichs als neuer Suchbereich verwendet und 1) wird ausgeführt, bis ein gleicher Wert erreicht ist gefunden

4) Wenn am Ende kein gleicher Wert gefunden wird, wird eine Fehlermeldung zurückgegeben.

Als Binärbaum verstanden: Der Mittelwert ist die Wurzel des Binärbaums, die erste Hälfte ist der linke Teilbaum und die zweite Hälfte ist der rechte Teilbaum. Die Anzahl der Suchvorgänge für die halbierte Suchmethode entspricht genau der Anzahl der Ebenen, in denen sich der Wert befindet. Unter Bedingungen gleicher Wahrscheinlichkeit beträgt sie ungefähr

log2(n 1)-1

Code kopieren Der Code lautet wie folgt:

//Data ist das zu durchsuchende Array, x ist der zu durchsuchende Datenwert, beg ist der Anfang des Suchbereichs und last ist das Ende des Suchbereichs
//Nicht rekursive Methode
int BiSearch(int data[], const int x, int beg, int last)
{
int mid;//mittlere Position
Wenn (bitte > zuletzt) ​​

Rückgabe -1;
}  
While(beg <= last)

         mid = (begin last) /
If (x == data[mid] )
                                                                              Zurück in der Mitte;
                                                                                                                   else if (data[mid] < x)
                                                                                              Beginn = Mitte 1;                                                                                                                                                                  else if (data[mid] > x)
                                                                              zuletzt = Mitte -
                                                                                                       }  
Rückgabe -1;
}
//Rekursive Methode
int IterBiSearch(int data[], const int x, int beg, int last)
{
int mid = -1;
mid = (zuletzt beginnen) / 2; If (x == data[mid])

Zurück in der Mitte;
}  
sonst wenn (x < data[mid])

         return IterBiSearch(data, x, beg, mid - 1); }  
else if (x > data[mid])

         return IterBiSearch(data, x, mid 1, last); }  
Rückgabe -1;
}
//Hauptfunktion
int _tmain(int argc, _TCHAR* argv[])
{
int data1[60] = {0}; int no2search = 45;
cout << "Das Array ist: " << int siz = sizeof(data1)/sizeof(int);
for (int i = 0; i < siz; i )

          data1[i] = i;                                      cout << data1[i] << }  
cout << endl; int index = -1;
//index = BiSearch(data1, no2search, 0, siz);
Index = IterBiSearch(data1, no2search, 0, siz); cout << "Index von" << Getchar();
Rückgabe 0;
}

复制代码 代码如下 :

/**
* Trouver la position du caractère dans le tableau par moitié (liste ordonnée)
* @param array Le tableau récupéré
* @param x Le personnage à rechercher
* @returns La position du caractère dans le tableau, s'il n'est pas trouvé, renvoie -1
​*/ 
function binaireRecherche(array,x){
  varPointBas=1;                    
 var higPoint=array.length;
 var returnValue=-1;               
 var point médian ;
 var trouvé = faux ;                  
 while ((lowPoint<=higPoint)&&(!found)){
  midPoint=Math.ceil((lowPoint higPoint)/2);
  //console.log(lowPoint "====" midPoint "====" highPoint);
  si(x>array[midPoint-1]){
   point bas=point médian 1;
  >
  sinon if(x    higPoint= midPoint-1;
  >
  sinon if(x=array[midPoint-1]){
   trouvé=true;
  >
 }
 si(trouvé){
    returnValue=midPoint;
 >
 return returnValue;
>
/*var array2=[1,2,3,4,5,6,7,8,9,100,109];*/
var array2=['a','b','c','d','e','f','g'];
console.log(binarySearch(array2,'c'));
Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!