二分法

从一个已知的数组中查找其中某个数字,可以通过计算机逐个取对比查找,但效率会很慢,这时可以使用“二分法”提高查找的效率。

二分法注意事项及原理:

  1、要查找的元素必须是有序排列的;

  2、将待查找的数字与数组中的中间位置进行比较。

      3、如果比中间位置的元素值小,去左边查找(更改结束位置)

      4、如果比中间位置的元素值大,去右边查找(更改起始位置)

 

#include <stdio.h>
void main()
{
  int nums[9]={1,2,3,4,5,6,7,8,9};
  int i=0;                  // 用来记录查询的次数
  int check;                   //待查寻数字
  int left,right,middle;
  printf("输入你要查询的数字:\n");
  scanf("%d",&check);
  left=0;                   //确定最左端数字的初始下标
  right=8;                 //确定最右端数字的初始下标
  while (left<=right){           //这里一定注意是 <= 号,如果写成 < 号 会出现  bug
    i++;
    middle=(left+right)/2;         //确定中间位置
    if(check>nums[middle]){
       left=middle+1;
    }

      else if(check<nums[middle]){
        right=middle-1;
      }

        else{
          printf("您要查找的数字的下标为:%d\n",middle);
          break;
        }
   }printf("共查找了%d次找到该元素!\n",i);

}

 

 

效果图:

 

posted @ 2017-05-13 15:10  若曦丶  阅读(258)  评论(0编辑  收藏  举报