二分查詢法示例
阿新 • • 發佈:2018-11-29
1024個人,有一個人有艾滋病。需要血液檢測。
如何快速找出這個人。
所有人血液都採取過來。把512個人血液混合起來
512 512 1次淘汰512個人
256 256 2次淘汰256個人
128 128 3次淘汰128個人
64
32
16
4
2
1
0 shang
1
2
。。。 zhong
1021
1022
1023 xia
#include <iostream> using namespace std; int main() { int a[128]; for(int i=0;i<128;i++) { a[i]=i; } printf("%p\n",a); int num=333; int shang = 0; int xia =1023; int zhong; while(shang < xia ) { zhong =(shang +xia)/2;//取一箇中間值 cout<<shang<<","<<zhong<<","<<xia<<endl; if(num =a[zhong]) { printf("找到了"); break;//跳出迴圈 } else if(num>a[zhong]) { shang=zhong +1; }else { xia =zhong -1; } } return 0; }