若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

3102: 这样查找效率高

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,444

题目描述

在n个整数构成的有序序列中,找到关键字key在序列中出现的位置。当key在序列中不出现时,输出No
为了提高查找效率,利用待查找序列有序的特征,程序使用“二分查找”的算法。二分查找的做法是:首先,将表中间位置记录的关键字与查找关键字key比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
在提示部分已经给出部分代码,将程序补充完整,并提交规定的部分。

输入

先输入n个表示待查找的序列中的元素个数
再输入n个整数作为待查找序列,这些整数按从小到大的顺序排列
最后输入要查找的数key

输出

输出key在序列出现的位置,若不出现,输出No

样例输入

10
2 4 5 6 8 22 37 65 75 88
5

样例输出

3

参考代码

#include <stdio.h>
#define SIZE 100
int find(int *, int, int);
int main( ) 
{
    int d[SIZE],i;
    int n,key,index;
    scanf("%d", &n);
    for (i=0;i<n;i++)
            scanf("%d", &d[i]);
    scanf("%d", &key);
    index=find(d,n,key);
    if(index >= 0)
            printf("%dn", index+1);
    else
        printf("Non");
    return 0;
}
int find(int *d, int n, int k)
{
    int i;
   for(i=0;i<n;i++)
   {
       if(d[i]==k)
       {
           return i;
       }
   }
   return -1;
}

解析

暂无

hustoj

发表评论 取消回复

邮箱地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

Skip 原站点 Dreams孤独患者
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist