什么是折半查找算法?
在一个有序数组中查找某一元素,确定一个中间位置,如果大于该中间数,则在右边查找,如果小于,则在左边查找
c++代码:
#include "iostream"
using namespace std;
int search(int arr[],int size,int num){
int l = 0;//初始化头部下标
int h = size-1;//初始化尾部下标
int mid;//数组中间位置
while (l <= h){
mid = (l + h) / 2;
if (num == arr[mid]){
return mid;
}
else if (num>arr[mid]){
l = mid + 1;
}
else{
h = mid - 1;
}
}
return -1;
}
int _tmain(int argc, _TCHAR* argv[])
{
int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int index=search(arr, 10, 4);
cout << "index: " << index;
return 0;
}