有序升序数组的二分查找

  • Post author:
  • Post category:其他




有序升序数组的二分查找

//有序升序数组二分查找
#include<stdio.h>
#include<windows.h>  //控制台显示
int BinSearch(int arr[],int num, int x)
{
 int left = 0;
 int right = num - 1;
 while (left<=right)    //条件判定
 {
  int mid = (left + right) / 2;     //先与中间数字进行对比
  if (x>arr[mid])                  //如果x>数组下标为mid时,说明x在右边
  {
   left = mid + 1;               //(6+10)/2,再进行查找的数不包含下标为mid的数
  }
  else if (x < arr[mid])
  {
   right = mid - 1;               //(0+4)/2
  }
  else
  {
   return mid;
  }
 }
 return -1;                             //找不到数字
}
int main()
{
 int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
 int num = sizeof(arr) / sizeof(arr[0]);
 int who = 8;
 int index = BinSearch(arr,num,who);
 if (-1 == index)
 {
  printf("找不到\n");
 }
 else{
  printf("数组中%d下标为:%d\n", who, index);
 }
 system("pause");
 return 0; 
}



版权声明:本文为shuangweiyebai原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。