vlambda博客
学习文章列表

期末C语言特辑- 二分查找法

期末C语言特辑

 二分查找法

【问题描述】编程函数实现在有序数据中进行折半查找,要求从键盘上输入10个升序整数存入一维数组a,再输入要查询的数据值,根据查询结果打印输出“Not found”或“Found”。
【输入形式】“%d”
【输出形式】“%s”
【样例输入】

12 33 45 66 76 89 90 102 202 333

89

【样例输出】

“Found”

【样例说明】样例输入的第一行代表用户从键盘输入10个升序整数,第二行输入要查找的数据值。样例输出根据查找结果显示提示信息。查找成功输出“Found”,查找失败输出果打印输出“Not found”。

【评分标准】输出结果完全正确的满分。



  答案解析

#include <stdio.h>

void find(int a[],int num)

{

int tou=0;

int wei=10-1;

int flag=-2;//no find

while(tou<=wei)

{

int zhong=(tou+wei)/2;

if(num==a[zhong])

{

printf("Found");

flag=1;

break;

}

else if(num>a[zhong])//如果想查找的值大于中间值,中间值之前的数应当全部舍去 

{

tou=zhong+1;

}

else  //如果想查找的值小于中间值,中间值之后的数应当全部舍去

{

wei=zhong-1;

}

}

if(flag==-2) 

printf("Not found");

}

int main(){

    int a[10],n,i;

    for(i=0;i<10;i++)

    {

    scanf("%d",&a[i]); 

}

scanf("%d",&n);

find(a,n);//调用函数

    return 0;

}

期末必过

XIUMIUS

图文编辑:张华瑾

图文审核:宋庆淼