2017-10-26 15 views
0

私はバイナリ検索の仕組みを学んできたので、コードを検索して各行の内容を理解しようとしました。私が理解していないこの1行があります。 "return -1"の行。私はその意味を理解していません。誰かがそのコード行で何が起こるか説明できますか?バイナリ検索コード行

#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は、値が見つからなかったことを示します。 – Ryan

+0

これは、検索が見つからない場合は-1を返し、見つかった要素の位置を返します。 – Shushant

+0

です。どうもありがとう! :) – Hooman

答えて

1

復帰位置が配列されていないか、見つからないことを意味した場合-1であるバイナリ検索Soは0からアレイと、アレイの位置startで実行されます。

1

whileループが実行され、return文が含まれています。探したい項目が配列内にある場合は、whileループの戻り値が項目のインデックスを返します。項目が見つからない場合は、return -1ステートメントは呼び出し元に戻ります。つまり、high>lowの場合、-1を使用して、-1のインデックスが配列の範囲外であることを示します。あなたがチェック

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

を実行すると、バイナリ検索方法は、アイテムを見つけ、インデックスを返した場合return -1書がなければ、次にその意志(return文が

が欠落していることを言って、コンパイル時にエラーが存在することになりますbe> -1)then "Found!がコンソールに出力されます。そうでない場合、バイナリ検索方法が値< 0、つまり-1を返した場合、その項目は配列内に見つからないため、が見つかりません!がコンソールに表示されます。if文だけでバイナリ検索に良い結果が得られます!