#include <stdio.h>
int binary_search(int x, int data[], int b, int e)
{
int i;
while(b <= e)
{
i = (b + e) / 2;
if(data[i] == x) return i;
if(data[i] < x)
b = i + 1;
else
e = i - 1;
}
return -1;
}
int binary_search_recursion(int x, int data[], int b, int e)
{
int i;
i = (b + e) / 2;
if(b > e) return -1;
if(data[i] != x)
{
if(x < data[i])
return binary_search_recursion(x, data, 0, i - 1);
else
return binary_search_recursion(x, data, i + 1, e);
}
else
return i;
}
int main()
{
int data[] = {1, 4, 5, 7, 9};
printf("%d /n", binary_search_recursion(9, data, 0, 4));
printf("%d /n", binary_search(9, data, 0, 4));
printf("%d /n", binary_search_recursion(90, data, 0, 4));
printf("%d /n", binary_search(89, data, 0, 4));
return 0;
}
相关推荐
SpringBoot与Flowable整合:构建高效审批工作流的实战指南
本文是一份SpringBoot与Flowable整合构建高效审批工作流的实战指南。通过一个经典的二级审批场景,详细介绍了从项目搭建、BPMN流程设计、核心服务编写到RESTful API构建的完整步骤。文章深入探讨了如何利用Flowable工作流引擎实现审批流程的自动化驱动与灵活管理,并分享了变量管理、监听器、异步执行等进阶技巧与常见避坑指南,帮助开发者快速构建健壮、可维护的企业级审批系统。
顺序查找,拆半查找。
顺序查找,拆半查找
Jenkins Job DSL:用代码管理CI/CD配置的实践指南
Jenkins 是持续集成(CI)领域的经典开源平台,其核心价值在于自动化构建与交付流程。然而传统 UI 配置方式导致配置不可版本化、难以复现、审计困难,严重制约团队规模化协作效率。Job DSL 作为一种声明式配置即代码(IaC)方案,通过 Groovy 脚本驱动 Jenkins 内部 API,实现 Job、View、Folder 等资源的程序化创建与维护,天然支持 Git 版本控制、权限审计与环境一致性保障。它不替代 Pipeline,而是与其协同构成‘流程定义’与‘基础设施定义’双轨体系,显著提升 C
LabVIEW UDS刷写核心VI:TOOMOSS_SendAndWaitResp深度解析
UDS(统一诊断服务)是汽车电子ECU刷写与诊断的核心协议,其严格时序要求(如0x10服务50ms响应窗)决定了上位机通信必须具备毫秒级实时性。LabVIEW作为主流测试开发平台,需在图形化环境中构建符合ISO 14229-1标准的同步通信基座——这正是TOOMOSS_SendAndWaitResp.vi的技术价值所在。它并非普通CAN封装,而是融合CAN物理层控制、UDS语义解析、动态超时管理与NRC错误处理的轻量级实时引擎。广泛应用于产线工装、教学平台及OBD-II DIY刷写器等场景,尤其依赖图莫斯(
关于RTP时间戳以及播放器对时间戳的处理
首先,了解时间戳几个基本概念: 时间戳单位:时间戳计算的单位不是秒之类的单位,而是由采样频率所代替的单位,这样做的目的就是为了是时间戳单位更为精准。比如说一个音频的采样频率为8000Hz,那么我们可以把时间戳单位设为1 / 8000。 时间戳增量:相邻两帧之间的时间差(以时间戳单位为基准)。 采样频率: 有些地方也叫时钟频率,即 每秒钟抽取样本的次数,例如音频的采...
开关电源设计实战:如何用AP值快速选型磁芯(附计算公式推导)
本文为开关电源工程师提供了基于AP值的磁芯快速选型实战指南。文章深入解析了AP值作为磁芯‘功率吞吐量’指标的核心物理意义,并通过详细的公式推导和24W反激电源设计实例,手把手演示如何利用AP值计算公式,结合电流密度、窗口利用率等关键参数,从众多磁芯型号中高效筛选出合适型号,同时强调了选型后的关键校验步骤与常见误区。
拆半查找的递归和非递归算法(C语言编译)
用HFSS仿真平面线圈的电感量
平面线圈是指在平面上绕制而成的线圈,如PCB上的电感线圈、无线供电使用的金属丝绕制而成的线圈等。根据线圈的不同形状可将平面线圈分为方形线圈,六角形线圈、八角形线圈、螺旋原型线圈等。
查找——线性表的查找
该篇文章文章主要介绍顺序查找、折半查找、分块查找的相关运算。 头文件:SqListSearch.h #include const int MaxSize = 100; //顺序表中最多元素个数 template struct RecType //顺序表记录类型 { T key; //存放关键字,假设关键字为T类型 char data; //存
通义万相Wan2.1模型Lora训练以及推理
使用DiffSynth-Studio进行通义万象Wan2.1的Lora训练和推理
Seurat 单细胞转录组测序数据分析教程(三)——python(scanpy)
文章参考至,做了一个更详细的解读。本教程探讨了 scanpy 的可视化可能性,分为三个部分:嵌入的散点图(例如 UMAP、t-SNE)使用已知标记基因鉴定簇差异表达基因的可视化在本教程中,我们将使用来自 10x 的数据集,其中包含来自PBMC的 68k 个细胞。Scanpy 在其分布中包括该数据集的简化样本,该数据集仅包含 700 个细胞和 765 个高度可变的基因。该数据集已经过预处理和 UMAP 计算。在本教程中,我们还将使用以下文献标记:B细胞:CD79A、MS4A1。
Python数据结构实验 查找实验(一)
实验内容 (1)编写一个实验程序,对一个递增有序表进行折半查找,输出成功找到其中每个元素的查找序列,用相关数据进行测试。 (2)假设一个带权图G采用邻接矩阵存储,设计一个算法,采用狄克斯特拉算法思路,求顶点s到顶点t的最短路径长度(假设顶点s和t都是G中的顶点)。
Sparse-ICP—(4) 加权稀疏迭代最近点算法(matlab版)
本文介绍了加权稀疏迭代最近点算法的实现。
【数据结构】排序与查找复习
随手写的,不保证正确性
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)
迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)
归并排序(merge sort)
归并排序(merge sort)体现了分治的思想,即将一个待排序数组分为两部分,对这两个部分进行归并排序,排序后,再对两个已经排序好的数组进行合并。这种思想可以用递归方式很容易实现。归并排序的时间复杂度为O(nlogn),空间复杂度为O(n)。实现代码如下:#include #include "common.h" void merge(int data[], int
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
冒泡排序(bubble sort)
冒泡排序是最基本的排序算法,常被做为内部排序的第一个排序算法进行讲解。它的原理非常简单,只是一个两层循环,每次将最大或最小的放到数组最后。算法如下(b为数组的起始位置, e为数组的结果位置):int bubble(int data[], int b, int e){ int i, j, n = 0; for(i = e; i > b; i--) for(j = b; j
IDEA的使用指南
IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.
520



被折叠的 条评论
为什么被折叠?



