2017-10-07 5 views
-1

これがなぜ検索された要素のインデックスを返さないのか分かりません。入力はソートされた配列、そのサイズ、見つかる要素です。これはなぜ要素のインデックスを返さないのですか?

int binarySearch(int a[], int size, int key){ 
    int mid = (size)/2; 
    if(a[mid] == key){ 
    return mid; 
    }else if(size ==1 || size ==0){ 
     return -1; 
    } 

    if(key<a[mid]){ 
    return binarySearch(a, mid, key); 
    }else if (key > a[mid]){ 
    return binarySearch(a+(mid), size-mid, key); 
    } 
} 
+0

C++を学んでいるなら、標準ライブラリと 'std :: vector'のようなことを学びましょう。配列のポインタ/サイズのペアを渡すことは、単なる巨大な混乱です。 – tadman

+0

あなたの質問に対する答えを見つける正しい方法は、デバッガを使うことです。 – aschepler

+0

小さな失敗例(つまり、 'a'の内容と' key'の値)を指定してください。 –

答えて

0

key > a[mid]場合は、binarySearchだけ配列の後半を参照してくださいので、後半へのインデックスを返しますよう、mid + binarySearch(a+(mid), size-mid, key)を返却する必要があります。

+0

Worked。ありがとう。 –

関連する問題