二分查找

来源:互联网 发布:vb.net socket 多线程 编辑:程序博客网 时间:2024/05/24 08:33

又称折半查找,是指在已经排序过的一些数中,找我们要找的数,a为数组的第一个数下标,c为数组中最后一个数下标,b为数组中间数下标,让我们要找的数m和中间元素做

比较,若比中间大则,a往后移到b+1位置,c保持不变,b继续移动到a和c之间。

代码:

#include <stdio.h>int f(int *v,int n,int m){int i,a=0,b,c=n-1; //a为前面第一个数下标,b为中间数下标,c为最后的数下标 while (a<=c)  //大的数必须要保持比小的数大 {b = (a+c) / 2;  //找出中间数下标 if (m<v[b])   //查找数小于中间数  {  c=b-1;  } else if (m>v[b])   //查找数大于中间数  {  a=b+1;  }else   //即不大于又不小于,则中间数就是要找的数   return 1;  }return 0;}int main(){int v[10]={11,21,33,44,53,65,73,81,92,100},c;c = f(v,10,21); //发送数组a,长度10,要找的数21if (c)printf("找到");elseprintf("没有找到");return 0;}


0 0
原创粉丝点击