有序表的二分查找和伪代码
- int Binary_Search(int *a, int n, int key)
- {
- int mid = 0;
- int high = n-1;
- int low = 0;
- while (low <= high)
- {
- mid = (low+high)/2;
- if(key < a[mid])
- {
- high = mid-1;
- }
- else if (key > a[mid])
- {
- low = mid+1;
- }
- else if (key == a[mid])
- {
- return mid;
- }
- }
- return -1;//查找失败
- }
- int main()
- {
- int a[10] = {1,2,3,4,5,6,7,8,9,10};
- int key = 7;
- cout<<Binary_Search(a, 10, key)<<endl;
- key = 99;
- cout<<Binary_Search(a, 10, key)<<endl;//如果返回-1,则查找失败
- getchar();
- return 0;
- }
伪代码:
BinarySearch(max,min,des)
mid-<(max+min)/2
while(min<=max)
mid=(min+max)/2
if mid=des then
return mid
elseif mid >des then
max=mid-1
else
min=mid+1
return max
浙公网安备 33010602011771号