#include<stdio.h>
#include<iostream>
using namespace std;
#define Length 8
int BinarySearch1(int num[], int head, int rear, int key);//二分查找(递归)
int BinarySearch2(int num[], int head, int rear, int key);//二分查找(迭代)
int main()
{
int num[6] = {5, 12, 20, 41, 43, 88};
int location;
location = BinarySearch1(num, 0, 6, 43);
//location = BinarySearch2(num, 0, 6, 43);
printf("位置是: %d", location);
return 0;
}
int BinarySearch1(int num[], int head, int rear, int key)
{
if(head > rear)
return head;
int mid = head + (rear - head)/2;
if(key < num[mid])
{
return BinarySearch1(num, head, mid - 1, key);
}
else if(key > num[mid])
{
return BinarySearch1(num, mid + 1, rear, key);
}
else
return mid;
}
int BinarySearch2(int num[], int head, int rear, int key)
{
while(head <= rear)
{
int mid = head + (rear - head)/2;
if(key < num[mid])
rear = mid - 1;
else if(key > num[mid])
head = mid + 1;
else
return mid;
}
}