int BSearch(int a[],int x,int low,int high) { int mid; if(low>high)return -1; //查找不胜利 mid=(low+high)/2; if(x==a[mid])return mid; //查找胜利 else if(x return BSearch(a,x,low,mid-1); //在下半区查找 else return BSearch(a,x,mid+1,high); //在上半区查找 }
int search(int array[], int n, int v) { ? ? int left, right, middle;
? ? left = 0, right = n - 1;
? ? while (left <= right) ? ? { ? ? ? ? middle = (left + right) / 2; ? ? ? ? if (array[middle] > v) ? ? ? ? { ? ? ? ? ? ? right = middle - 1; ? ? ? ? } ? ? ? ? else if (array[middle] < v) ? ? ? ? { ? ? ? ? ? ? left = middle + 1; ? ? ? ? } ? ? ? ? else ? ? ? ? { ? ? ? ? ? ? return middle; ? ? ? ? } ? ? }
? ? return -1; } ?
|