二分法查找的思想是,对于已经按照从小到大的顺序排列好的 N 个数据,取出排在中间位置的数据进行比较,如果等于要找的数则查找结束;如果比要找的数大,则要找的数据一定在左边部分,则在左边数据中继续用类似的方法查找;如果比要找的数小,则在右边数据中继续用类似的方法查找。在整个过程中,查找的数据范围每次都被分成两半,因而称为二分法查找。
例:在1 2 3 4 5 6 7 8 9 10 这几个数中找到6
代码如下:
#include#include int main() { int str[11]={1,2,3,4,5,6,7,8,9,10}; int f=1,l=10,mid; int t; scanf("%d",&t); while(f<=l) { mid=(f+l)/2; if(str[mid]>t) l=mid-1; else if(str[mid] 第一个数设为f,最后一个数设为l,中间的数为mid
首先找出中间数mid,mid与t(就是6)比较,6比5大,将5左边的数据全部抹去。
f移到6的位置,
继续找mid,mid=8,8比6大,将8左边的数据全部抹去。
l移到7的位置,
继续找mid,这时mid=6,t就找到了



