//数组名,需要查找的数,数组长度。加const防止在函数中误操作修改数值
int bin_seach(int* pArr, int nCount, const int nData)
{
//1. 先确定开始下标和结束的下标
static int nBeg = 0; //查找起点
static int nEnd = nCount - 1; //查找终点
static int nMid = (nEnd - nBeg) / 2; //查找中点
if (pArr[nMid] == nData) { // 判断中间位置保存的数据是否就是
return nMid; // 要查找的元素
}
if (nBeg == nEnd) {
return -1;
}
if (nData < pArr[nMid]) { // 开始确定下一次的查找范围
nEnd = nMid; // 1. 保存开始下标不变
} // 2. 将当前中间下标设置为新的结束下标
else { // 1. 保存结束的下标不变
nBeg = nMid; // 2. 将当前中间下标设置为新的开始下标
} // 重新计算新的中间下标
nMid = ((nEnd - nBeg) / 2) + nBeg;
bin_seach(pArr,nCount/2, nData); //如果为找到,则数据传入再次查找
}
int main()
{
int nArr[] = { 0,15,19,46,78,96,100,151,160,193 };
int n = bin_seach(nArr, 10, 46);
printf("查找的元素在数组nArr[%d]中。", n);