【二分法查找c语言程序】C语言实现二分法查找的例子

更新时间:2019-08-20    来源:C语言    手机版     字体:

【www.bbyears.com--C语言】

看到一篇文章提到二分法排序,好久没写CODE。构思了一下。

 代码如下

#include
int binSearch(int, int, int);
main()
{
   int i, n = 10, x = 7;
   //这里如果把数组a[]定义为a[n],是错误的,不能定义变长数组。
   int a[10];
   printf("Please enter your num:/n");
   //从标准输入给数组赋值的唯一方法:用for循环
   for(i=0;i    {
      scanf("%d",&a[i]);
   }
   printf("The %d can be found in the arr, it is %dth of the arr/n",
           x, binSearch(x,a,n));
}
/*第一种方法,判断都在循环内*/
int binSearch(int x, int a[], int n)
{
   int low, high, mid;
   low = 0;
   high = n-1;
   //注意,这里必须用<=, 用<不对,一直返回-1
   while(low <= high)
   {
      mid = (low + high) / 2;
      if(x < a[mid])
      high = mid - 1;
      else if(x > a[mid])
      low = mid + 1;
      else
      return mid;
   }
   return -1;
}
/*在循环内执行一次测试的方法*/
/*int binSearch(int x, int a[], int n)
{
   int low, high, mid;
   low = 0;
   high = n-1;
   mid = (low + high) / 2;
   while((low <= high)&&(a[mid]!=x))
   {
      if(x < a[mid])
      high = mid -1;
      else
      low = mid + 1;
      mid = (low + high) / 2;
   }
   if(a[mid] == x)
   return mid;
   else
   return -1;
}
*/

本文来源:http://www.bbyears.com/asp/63333.html