二分查找

来源:互联网 发布:淘宝店兔家公子美妆店 编辑:程序博客网 时间:2024/06/05 21:49

二分查找就是折半查找,主要思想:

将要查找的数与表的中间的元素进行比较,若该数与中间值相等那么查找成功;如果该数大于中间的数,那么这个数一定在右子表中,继续对右子表进行折半查找;若该数比中间值小,那么这个数一定在左子表中,继续对左子表进行差找。知道查找成功或查找失败。

二分查找的函数代码如下:

void binary_search(int arr[], int size, int key)
{
 int low, high, mid,count=0,count1=0;
 low = 0;
 high = size - 1;
 while (low <= high)
 {
  count++;//record for number;
  mid = (low + high) / 2;
  if (key > arr[mid])
  {
   low = mid + 1;

  }
  else if (key < arr[mid])
  {
   high = mid - 1;
  }
  else if (key == arr[mid])
  {
   count1++;
   printf("success!\nsearch %d times!arr[%d]=%d", count, mid, key);
   break;
  }
 }
 if (count1 == 0)
  printf("no found!");
}

主函数代码如下:

int main()
{
 int arr[100],key ,n, i;
 printf("please input the length of array:\n");
 scanf("%d", &n);
 printf("please input element:\n");
 for (i = 0; i < n;i++)
         scanf("%d", &arr[i]);
 printf("please input the number which do you want to search:\n");
 scanf("%d", &key);
 binary_search(arr, n, key);
 printf("\n");
 system("pause");
 return 0;
}

0 0