还是编程珠玑上的东西,作者对最初的算法稍微优化了一下。
#include#include #define N 10using namespace std;int binary_search(int *x,int n,int t) //x为要查找的数组,n为数组的大小,t为要找的值,找到则返回值的位置,否则返回-1{ int l=-1; //数组下界 int u=n; //数组上界 int p; //查找的值在数组中的位置 int m; //最中间的索引 while(l+1!=u) { m=(l+u)/2; if (x[m] =n || x[p]!=t) p=-1; return p;}int main(){ int x[N]={ 31,-41,59,26,-53,58,97,-93,-23,84}; sort(x,x+N); //这个是快排,绝对比自己写的效率高 for (int i=0;i