使用折半查找法查找数组中的元素
#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();
}
使用折半查找法查找数组中的元素相关推荐
- 编写类A2, 定义方法find, 实现查找某字符串数组中的元素查找,并返回索引,如果找不到,返回-1
编写类A2, 定义方法find, 实现查找某字符串数组中的元素查找,并返回索引,如果找不到,返回-1 思路: 方法的返回值类型: int 方法名 : find 方法的形参 (String , Stri ...
- 北京林业大学oj实验题search使用函数模板查找不同数据类型数组中元素是否存在
北京林业大学oj实验题search 使用模板函数的方法来查找不同数据类型数组中的元素是否存在,若存在则返回该元素下标,若不存在则返回-1 题目: 描述 设计一个模板函数,实现在一个给定的数组中查找给定 ...
- 题7.15:要求输入一个职工号,用折半查找法查找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。按职工号由小到大顺序排序,姓名顺序也随之调整
题目 本题是谭浩强<C程序设计课后习题>题7.15. 题目: 写几个函数: 1.输入10个职工的姓名和职工号. 2.按职工号由小到大顺序排序,姓名顺序也随之调整 3.要求输入一个职工号,用 ...
- 【Java】 查找数组中指定元素之 顺序查找 与 二分查找
今天博主分享两个查找数组中指定元素的算法:顺序查找与二分查找 小小目录 1.顺序查找 2. 二分查找 1.顺序查找 给定一个数组, 再给定一个元素, 找出该元素在数组中的位置. 代码如下: //顺序查 ...
- c语言经典算法——查找一个整数数组中第二大数
https://www.cnblogs.com/dootoo/p/4473958.html 题目: 实现一个函数,查找一个整数数组中第二大数. 算法思想: 设置两个变量max1和max2,用来保存最大 ...
- 在数组中查找第k个最大元素_查找数组中每个元素的最近最大邻居
在数组中查找第k个最大元素 Problem statement: 问题陈述: Given an array of elements, find the nearest (on the right) g ...
- js判断数组中重复元素并找出_javascript查找数组中重复元素的方法
这篇文章主要介绍了JS查找数组中重复元素的方法,结合具体实例形式对比分析了javascript针对数组的遍历.判断.排序等相关操作技巧,需要的朋友可以参考下 本文实例讲述了JS查找数组中重复元素的方法 ...
- js 实现查找两个数组中的不同项——基础积累
今天遇到一个需求,就是select的多选下拉,根据选中的值再进行相应的处理.比如当前选中了['山东','浙江','深圳']三项内容,现在去掉中间的深圳,我需要拿到去掉的是哪一项. 我想的方式就是: w ...
- python使用二分查找法查找某个数是否在列表内
输入一个数,使用二分查找法查找它是否在列表[34,64,67,72,73,82,83,85,87,88,90,91,96,98]中.如果找到,输出此数及其索引值,否则输出"没有找到" ...
- 判断数组中某个元素除自身外是否和其他数据不同_18 张图带你彻底认识这些数据结构...
作者 | 嘉明 来源 | https://github.com/reng99/blogs 数据结构是计算机存储.组织数据的方式.数据结构是指相互直接存在一种或多种特殊关系的数据元素的集合.通常情况下, ...
最新文章
- linux查看与修改交换内存配置(解决zabbix-agent启动报错)
- oracle 月份期差,Oracle Database 日期算术-日期之间的月份或年份之间的差异
- log4j:WARN No appenders could be found for logger
- win10必须禁用的服务_7寸屏的迷你电脑,就算是8GB运行内存,也必须关闭的系统选项...
- idea 2018.1 创建springboot开启找回Run Dashboard
- java扫描器创建,java – 如何创建条码扫描器(Android)?
- 阶段3 2.Spring_09.JdbcTemplate的基本使用_5 JdbcTemplate在spring的ioc中使用
- 2022年华为杯中国研究生数学建模竞赛F题思路
- 测试一下你真的理解数据库左连接了吗?
- 缺少计算机所需的介质驱动程序6,缺少计算机所需的介质驱动程序解决办法
- 数据挖掘—GEO,TCGA,Oncomine联合(三)GEO数据的下载和数据质量分析
- 给女朋友讲解什么是代理模式
- html5清新文艺,30句清新文艺范的句子
- gif一键抠图 在线_一款支持智能抠图、钢笔抠图的在线抠图工具上线了 速抠图 sukoutu.com...
- 2.7.0 gitk 打不开 Error in startup script: unknown color name lime
- 10分钟白嫖我的常用的在线工具网站清单
- OSChina 周二乱弹 —— 对!公交车绝缘体
- 有手机去视频水印的app下载 迅雷下载
- 一次性奖金是否选择并入综合所得测算表
- Android开发 系统服务,android 系统服务 开发