二分查找又称对半查找。它的基本思想是假定数据是按照升序排列的,对于给定值K,从序列的中间位置开始比较,如果当前位置值等于K,则查找成功;否则K<当前值,则在当前值前半段继续查找,如果K>当前值,则在当前值后半段继续查找,直到查到到K,否则继续查找。
#include <stdio.h>
#define N 10
int main ()
{
int k,i;
int table[N]={0,2,4,6,8,10,12,14,16,18};
int mid=0,left=0,right=N-1;
int find=0 //如果找到则赋值1,如果找不到则赋值0
printf("请输入要找的数:");
scanf("%d",&k);
while(!find&&left<right) //查找数
{
mid=(left+right)/2;
if (k==table[mid])
find=1; //查找成功
else if (k<table[mid])
right=mid-1; //进入前半段查找
else left=mid+1; //进入后半段查找
}
if (find==1)
printf("%d 在 table[%d]中\n",k,mid);
else
printf("没有找到数%d\n",k)
return 0;
}