二分搜索问题,二分查找和二分搜索

  二分搜索问题,二分查找和二分搜索

  int left=-1,right=length-1;

  而(左1!=右){//左右左=右

  int middle=(左右)/2;

  if(a[middle] n){ //a[left] n

  左=中;

  }else{ //a[right]=n

  右=中;

  if(right=length a[right]!=n)//没有找到

  return-1;

  向右返回;

  //测试无发现

  if(BSearch(t,NUM,t[0] - 1)!=-1 BSearch(t,NUM,t[NUM-1] 1)!=-1){

  结果=假;

  返回结果;

  *测试功能

  bool TestBetterBSearch(){

  常量整数=20

  int BeginNum=10

  int t[NUM];

  for(int I=0;i NUMi){

  t[I]=开始编号;

  开始

  布尔结果=真

  for(int j=0;j NUMj){

  if(BetterBSearch(t,NUM,t[j])!=j){

  结果=假;

  //测试无发现

  if(BetterBSearch(t,NUM,t[0] - 1)!=-1 BetterBSearch(t,NUM,t[NUM-1] 1)!=-1){

  结果=假;

  返回结果;

  int main(int argc,char* argv[])

  常量整数=10;

  int t[NUM]={10,11,12,13,14,15,16,17,18,20 };

  PrintfNum(t,NUM);

  for(int I=0;i NUMi){

   cout t[i]位于索引处:" BSearch(t,NUM,t[I])endl;

  cout 在数组t中搜索100,结果: BSearch(t,NUM,100)endl;

  cout结束

  cout BSearch测试结果: TestBSearch()endl;

  cout BetterBSearch测试结果: TestBetterBSearch()endl;

  返回0;

  模板类T

  void PrintfNum(T a[],const int n){

  for(int I=0;i i){

  cout a[i],;

  cout结束

  http://www.waitingfy.com/?p=464

二分搜索问题,二分查找和二分搜索