2017-10-26 2 views
0

Ich habe versucht zu lernen, wie die binäre Suche funktioniert, also suchte ich nach einem Code und versuchte zu verstehen, was jede Zeile tut. Da ist diese eine Zeile, die ich nicht verstehe. Die Zeile mit dem "Return -1". Ich verstehe nicht, was das bedeutet. Kann jemand erklären, was in dieser Codezeile passiert?Binäre Suche Codezeile

#include<stdio.h> 

int binarySearch(int array[], int size, int searchValue){ 
int low = 0; 
int high = size - 1; 

while(low<=high){// is the array exhausted? 
    int mid = (low + high)/2; //If not, find the middle index 

    if(searchValue == array[mid]){ 
     return mid; 
    } 
    else if(searchValue > array[mid]){ 
     low = mid + 1; 
    } 
    else{ 
     high = mid - 1; 
    } 
} 
return -1; 
} 

int main(){ 
int array[] = {1,2,3,4,5,6,7}; 
int searchNum; 

printf("Enter an integer:"); 
scanf("%d", &searchNum); 

int result = binarySearch(array,7,searchNum); 

if(result>=0){ 
    printf("Found!"); 
} 
else{ 
    printf("Not found!"); 
} 
getch(); 
} 
+3

-1 zeigt an, dass der Wert nicht gefunden wurde. – Ryan

+0

es bedeutet, wenn keine Suche gefunden wird, dann -1 zurückgeben sonst wird es die Position des gefundenen Elements – Shushant

+0

ich sehe. Danke vielmals! :) – Hooman

Antwort

1

Binäre Suche in Array und Array-Position Start durchgeführt von 0. Wenn also -1 Rückkehr bedeutet, dass Position nicht im Array ist oder nicht gefunden werden kann.

1

Die while Schleife ausgeführt wird und enthält eine return-Anweisung, wenn das Element Sie suchen, in dem Array ist, dann ist die Rückkehr in die while Schleife wird der Index des Elements zurück. Die folgende Anweisung return -1 kehrt zum Aufrufer zurück, wenn das Element nicht gefunden wird, dh wenn , -1 verwendet wird, um anzuzeigen, dass es sich im Array befindet, da ein Index von -1 außerhalb der Grenzen eines beliebigen Arrays liegt. Ohne die return -1 Aussage dann gäbe es eine Kompilierung Fehler sagen, dass die return-Anweisung

fehlt Wenn Sie Ihren Scheck

if(result>=0) { 
printf("Found!"); 
} else { 
printf("Not found!"); 
} 

Wenn das binäre Suchverfahren findet das Element durchführen und gibt den Index (was be> -1) dann "Gefunden! wird auf die Konsole gedruckt werden, sonst, wenn die binäre Suchmethode einen Wert < 0, dh -1 dann das Element wurde nicht im Array gefunden, und damit nicht gefunden! wird auf die Konsole gedruckt, Ihre if-Anweisung allein kann Ihrer binären Suche eine gute Explantation geben!