一、二分查找,基于有序数组
int binary_search(int *pData, int N, int key)
{
int start=0, end=N-1, middle;
while(start<=end) //如果是start<end的话,第0和N-1位置无法查询到
{
middle = (start+end)/2;
if(key==pData[middle])
{
return middle;
}
else if(key>pData[middle])
{
start = middle+1; //如果start=middle,max查不到,key>max时跳不出while
}
else
{
end = middle-1; //如果end=middle,key<min时跳不出while
}
}
return start;
}
二、Hash查找