查找算法-Search,二分查找
查找过程:
将待查关键字与有序表中间位置的记录进行比较,若相等,查找成功,若小于,则只可能在有序表的前半部分,若大于则只可能在有序表的后半部分,因此,经过一次比较,就将查找范围缩小一半,这样一直进行下去直到找到所需记录或记录不在查找表中。
二分查找特点
代码
int Search_Binary(int* a, int key);
int main(void)
{
int a[SIZE] = { 2,3,4,5,6,78,99,100 };
int i = Search_Binary(a, 100);
printf("该元素数组下标为:%d", i);
return 0;
}
int Search_Binary(int* a,int key)
{
int low = 0; //记录首位为最低下标
int high = SIZE - 1; //记录末尾为最高下标
while (low <= high)
{
int mid = (low + high);//二分,记录中间坐标
if (key < a[mid]) //若查找值比中值小
high = mid-1; //最高下标调整为中间坐标的前一位
else if (key > a[mid]) //若查找值比中值大
low = mid+1; //最低下标调整为中间坐标的后一位
else if(key==a[mid]) //查找成功 返回下标值
return mid;
}
return 0; //循环结束后程序仍没有结束,则返回0表明查找失败
}