#include "stdio.h"
int bin_search(int key[],int n,int k)
{
    int  low = 0, high = n-1, mid;
    while(low<=high){
        mid = (low+high)/2;
        if(key[mid] == k) {
            return mid;        /*查找成功,返回mid*/
        } if (k > key[mid]) {
            low = mid + 1;        /*在后半序列中查找*/
        } else {
            high = mid - 1;        /*在前半序列中查找*/
        }
    }
    return -1;                    /*查找失败,返回-1*/
}

int bin_search_recur(int key[],int low, int high,int k)
{
    int mid;

if(low>high)
        return -1;
    else{
        
        mid = (low+high) / 2;
        if(key[mid]==k) {
            return mid;
        }
        if(k>key[mid]) {
            return bin_search_recur(key,mid+1,high,k);        /*在序列的后半部分查找*/
        } else {
            return bin_search_recur(key,low,mid-1,k);            /*在序列的前半部分查找*/
        }    
    }
}

main()
{
    int key[10] = {1,3,5,7,10,12,15,19,21,50};    /*初始化一个整型数组*/
    int i,n ,addr;
    int k;
    printf("The contents of the Array key are\n");
    for(i=0;i<10;i++) {
        printf("%d ",key[i]);                    /*显示关键字数组key中的内容*/
    }
    printf("\nInput a interger for search\n");
    scanf("%d",&k);                                /*输入待查找的元素k*/
    addr = bin_search(key,10,k);                /*进行折半查找操作*/
    if(addr != -1) {                            /*返回值为不为-1,查找成功*/
        printf("key[%d] = %d\n ",addr,k);
    }else {
        printf("There is no %d in array key\n",k);        /*返回值为-1,查找失败*/
    }
    
    addr = bin_search_recur(key,0,9,k);
    if(addr != -1) {                            /*返回值为不为-1,查找成功*/
        printf("key[%d] = %d\n ",addr,k);
    }else {
        printf("There is no %d in array key\n",k);        /*返回值为-1,查找失败*/
    }
    getchar();
    getchar();
}

使用折半查找法查找数组中的元素相关推荐

  1. 编写类A2, 定义方法find, 实现查找某字符串数组中的元素查找,并返回索引,如果找不到,返回-1

    编写类A2, 定义方法find, 实现查找某字符串数组中的元素查找,并返回索引,如果找不到,返回-1 思路: 方法的返回值类型: int 方法名 : find 方法的形参 (String , Stri ...

  2. 北京林业大学oj实验题search使用函数模板查找不同数据类型数组中元素是否存在

    北京林业大学oj实验题search 使用模板函数的方法来查找不同数据类型数组中的元素是否存在,若存在则返回该元素下标,若不存在则返回-1 题目: 描述 设计一个模板函数,实现在一个给定的数组中查找给定 ...

  3. 题7.15:要求输入一个职工号,用折半查找法查找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。按职工号由小到大顺序排序,姓名顺序也随之调整

    题目 本题是谭浩强<C程序设计课后习题>题7.15. 题目: 写几个函数: 1.输入10个职工的姓名和职工号. 2.按职工号由小到大顺序排序,姓名顺序也随之调整 3.要求输入一个职工号,用 ...

  4. 【Java】 查找数组中指定元素之 顺序查找 与 二分查找

    今天博主分享两个查找数组中指定元素的算法:顺序查找与二分查找 小小目录 1.顺序查找 2. 二分查找 1.顺序查找 给定一个数组, 再给定一个元素, 找出该元素在数组中的位置. 代码如下: //顺序查 ...

  5. c语言经典算法——查找一个整数数组中第二大数

    https://www.cnblogs.com/dootoo/p/4473958.html 题目: 实现一个函数,查找一个整数数组中第二大数. 算法思想: 设置两个变量max1和max2,用来保存最大 ...

  6. 在数组中查找第k个最大元素_查找数组中每个元素的最近最大邻居

    在数组中查找第k个最大元素 Problem statement: 问题陈述: Given an array of elements, find the nearest (on the right) g ...

  7. js判断数组中重复元素并找出_javascript查找数组中重复元素的方法

    这篇文章主要介绍了JS查找数组中重复元素的方法,结合具体实例形式对比分析了javascript针对数组的遍历.判断.排序等相关操作技巧,需要的朋友可以参考下 本文实例讲述了JS查找数组中重复元素的方法 ...

  8. js 实现查找两个数组中的不同项——基础积累

    今天遇到一个需求,就是select的多选下拉,根据选中的值再进行相应的处理.比如当前选中了['山东','浙江','深圳']三项内容,现在去掉中间的深圳,我需要拿到去掉的是哪一项. 我想的方式就是: w ...

  9. python使用二分查找法查找某个数是否在列表内

    输入一个数,使用二分查找法查找它是否在列表[34,64,67,72,73,82,83,85,87,88,90,91,96,98]中.如果找到,输出此数及其索引值,否则输出"没有找到" ...

  10. 判断数组中某个元素除自身外是否和其他数据不同_18 张图带你彻底认识这些数据结构...

    作者 | 嘉明 来源 | https://github.com/reng99/blogs 数据结构是计算机存储.组织数据的方式.数据结构是指相互直接存在一种或多种特殊关系的数据元素的集合.通常情况下, ...

最新文章

  1. linux查看与修改交换内存配置(解决zabbix-agent启动报错)
  2. oracle 月份期差,Oracle Database 日期算术-日期之间的月份或年份之间的差异
  3. log4j:WARN No appenders could be found for logger
  4. win10必须禁用的服务_7寸屏的迷你电脑,就算是8GB运行内存,也必须关闭的系统选项...
  5. idea 2018.1 创建springboot开启找回Run Dashboard
  6. java扫描器创建,java – 如何创建条码扫描器(Android)?
  7. 阶段3 2.Spring_09.JdbcTemplate的基本使用_5 JdbcTemplate在spring的ioc中使用
  8. 2022年华为杯中国研究生数学建模竞赛F题思路
  9. 测试一下你真的理解数据库左连接了吗?
  10. 缺少计算机所需的介质驱动程序6,缺少计算机所需的介质驱动程序解决办法
  11. 数据挖掘—GEO,TCGA,Oncomine联合(三)GEO数据的下载和数据质量分析
  12. 给女朋友讲解什么是代理模式
  13. html5清新文艺,30句清新文艺范的句子
  14. gif一键抠图 在线_一款支持智能抠图、钢笔抠图的在线抠图工具上线了 速抠图 sukoutu.com...
  15. 2.7.0 gitk 打不开 Error in startup script: unknown color name lime
  16. 10分钟白嫖我的常用的在线工具网站清单
  17. OSChina 周二乱弹 —— 对!公交车绝缘体
  18. 有手机去视频水印的app下载 迅雷下载
  19. 一次性奖金是否选择并入综合所得测算表
  20. Android开发 系统服务,android 系统服务 开发

热门文章

  1. 未知高度的非表格垂直对齐
  2. html基础 — area(图像的作用区域标记)
  3. 懒人用日志分析-awstats的docker应用
  4. SwipeRefreshLayout+RecyclerView滑动冲突解决
  5. Preference Learning——Object Ranking
  6. 学习shell的第三天
  7. android定位问题
  8. Median of Two Sorted Array leetcode java
  9. [置顶]       javascript中的数组对象以及json学习笔记
  10. XP SP3多数功能借鉴Vista 安装将无需密码