一、折半查找
版本一:递归
/* 说明:v为数组,low为数组的下界,high为上界,x为需要查找的元素 */ int binsearch(int v[],int low, int high, int x) { int mid = (low+high) / 2; if(x == v[mid]) return mid; if(low >= high) return -1; if(x < v[mid]) return binsearch(v,low,mid-1,x); else return binsearch(v,mid+1,high,x); }
版本二:用while循环
/* 说明:x为需要查找的元素,v为数组,n为数组的大小。 */ int binsearch(int x,int v[], int n) { int low, high, mid; low = 0; high = n-1; while(low <= high) { mid = (low+high)/2; if(x < v[mid]) high = mid-1; else if(x > v[mid]) low = mid+1; else return mid; } return -1; }