[問題] 關於binary search
使用環境: Dev C++
執行結果
search:ib = 0, ie = 15
search: ib = 0, ie = 6
search: ib = 4, ie = 6
search: ib = 6, ie = 6
search ib = 6, ie = 6, return: 6
search ib = 4, ie = 6, return: 6
search ib = 0, ie = 6, return: 6
search ib = 0, ie = 15, return: 6
Final data 13 is at: 6
search:ib = 0, ie = 15
search: ib = 8, ie = 15
search: ib = 8, ie = 10
search: ib = 10, ie = 10
search: ib = 10, ie = 9
search ib = 10, ie = 9, return: -1
search ib = 10, ie = 10, return: -1
search ib = 8, ie = 10, return: -1
search ib = 8, ie = 15, return: -1
search ib = 0, ie = 15, return: -1
Final data 20 is at: -1
我的問題是
請問板上的高手為什麼會跑出黃色那幾行呀?
是程式哪裡寫錯了嗎?
(剛接觸程式不久 如果問題太過簡單 還請各位包涵謝謝)
程式碼如下
#include <iostream>
using namespace std;
int binsearch(int * dset, int ib, int ie, int data) {
cout << "search: ib = " << ib << ", ie = " << ie << endl;
int ii;
if (ib > ie) {
ii = -1;
} else {
ii = (ib + ie) / 2;
if (dset[ii] > data) {
ii = binsearch(dset, ib, ii-1, data);
} else if (dset[ii] < data) {
ii = binsearch(dset, ii+1, ie, data);
};
};
cout <<"search ib = "<<ib<<", ie = "<<ie<<" return: "<<ii<<endl;
return ii;
}
int main() {
int dset[] = {1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33};
cout << "Final data 13 is at: " << binsearch(dset,0,15,13) << endl;
cout << "Final data 20 is at: " << binsearch(dset,0,15,20) << endl;
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.160.56.188
推
11/13 13:51, , 1F
11/13 13:51, 1F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章