2017-10-07 118 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],你必須返回mid + binarySearch(a+(mid), size-mid, key),爲的binarySearch將只能看到數組的下半年,因此返回指數進入下半場。

+0

工作。謝謝。 –

相關問題