天天看点

有序数组中查找某个数字

#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>

int main()
{
  int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
  int i;
  int sz = sizeof(arr) / sizeof(arr[0]);
  for(i=0;i<sz;i++)
  {
    printf("%d ", arr[i]);
  }

  int n;
  printf("请输入你要查找的数字:>");
  scanf("%d", &n);

  int left = 0;   //左下标
  int right = sz - 1; //右下标

  while (left <= right)
  {
    int mid = (left + right) / 2;
    if (arr[mid] > n)
    {
      right = mid - 1;
    }
    else if (arr[mid] < n)
    {
      left = mid + 1;
    }
    else
    {
      printf("找到了,下标是%d\n", mid);
      break;
    }
  }

  if(left>right)
  {
    printf("没找到你想查找的数字\n");
  }
  return 0;
}      

继续阅读