欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

(C语言)折半查找

程序员文章站 2024-03-20 18:59:16
...

折半查找

题目:题目3:输入n(n<100)个有序正数,请用折半查找算法,查找x在其中的位置。
例如,
输入:
5
1,2,3,4,5
2
输出:
2
测试集合中,x数一定在正数数组中。即不用处理错误逻辑。

代码:
#include <stdio.h>

int main()
{
int num[100];
int a,b,flag,i=0;
scanf("%d",&a);//输入你要输入的的元素个数a
for(i=0;i<a;i++)
{
scanf("%d,",&num[i]);//根据你输入的元素个数a来一个个输出元素num[i]
}
scanf("%d",&b);//输入你想要查找的数,下面则是判断它在你上面输入的几个元素中处于哪个位置
int left=0,right=a-1;

while(left<=right)//大家去看下折半查找的定义就能理解我下面所写代码的意义了(最好是能够代入具体的数字进行计算就能更清楚)。
  {
    flag = (left+right)/2;//flag为一个判定变量
    if(b==num[flag])
      {printf("%d",flag+1);break;}
    if(num[flag] > b)
        right = flag-1;
    else if(num[flag] < b)
        left = flag+1;
  }

}