C++二分法在数组中查找关键字的方法
本文实例讲述了C++二分法在数组中查找关键字的方法。分享给大家供大家参考。具体如下:
/* 此程序演示了二分法查找算法(针对按从小到大排列的数组)的实现。 */ #include<iostream> usingnamespacestd; /* 功能:实现数组的二分法查找(只算法只适合按从小到大排列的数组) 返回值:关键字在数组中的下标,返回-1表示未找到 a[]:要搜索的数组 len:数组元素个数 key:要查找的关键字 */ intbinSearch(inta[],intlen,intkey) { inti=len/2; intii=0; if(len<1) return-1; if((key>a[i])&&(len-i>0)) { ii=binSearch(a+i+1,len-i-1,key);//在后半段数组中查找 if(ii!=-1) returnii+i+1;//加上数组前半段的长度 else return-1; } elseif(key<a[i]&&i>0)//在前半段数组中查找 returnbinSearch(a,i,key); elseif(key==a[i]) returni;//返回关键字在数组中的下标 else return-1;//未在数组中找到关键字 } intmain() { inta[]={2,4,5,20,24,35,66,78,98}; intlen=sizeof(a)/sizeof(int); inti,key=-1; while(1) { cin>>key; i=binSearch(a,len,key); printf("%d\n",i); if(key>100) break; } return0; }
希望本文所述对大家的C++程序设计有所帮助。