码迷,mamicode.com
首页 > 其他好文 > 详细

二分法

时间:2017-05-13 16:00:27      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:i++   下标   查询   bre   .com   通过   ima   二分   void   

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

二分法注意事项及原理:

  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);

}

 

 

效果图:

技术分享

 

二分法

标签:i++   下标   查询   bre   .com   通过   ima   二分   void   

原文地址:http://www.cnblogs.com/ruo-xi/p/6849021.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!