C++二分查找算法实例
作者:^~~^ 发布时间:2021-09-07 20:40:05
标签:C++,二分查找
本文实例为大家分享C++二分查找算法,通过改变边界位置来进行查找的方法,代码如下:
#include <iostream>
using namespace std;
int search(int *p,int length,int key);
int search1(int *p,int length,int key);
int main()
{
cout << "Hello world!" << endl;
int a[] = {1,2,3,4,5,6,7,8,8,8,9,10,11,12,13,14};
int len = sizeof(a)/sizeof(int);
int pos = search1(a,len,8);
cout << pos << endl;
return 0;
}
int search1(int *p,int length,int key)
{
int left=0;
int right=length-1;
while(left<=right)
{
int mid = (left+right)/2;
if(p[mid]>=key)
{
right = mid-1;
}else
{
left = mid+1;
}
}
if(left<length && p[left]==key)
return left;
return -1;
}
int search(int *p,int length,int key)
{
int left=0;
int right = length -1;
while(left<=right)
{
int mid = (left+right)/2;
if(p[mid]==key)
{
return mid;
}
if(p[mid] > key)
{
right = mid+1;
}
if(p[mid]<key)
{
left=mid-1;
}
}
return -1;
}
来源:http://www.cnblogs.com/lucy-lizhi/p/7381306.html


猜你喜欢
- 使用Castle.Core.dll实现,核心代码是使用Castle.DynamicProxy.ProxyGenerator类的CreateI
- 在阻塞队里中,除了对元素进行增加和删除外,我们可以把元素的删除做一个延迟的处理,即使用DelayQueue的方法。本文就来和大家聊聊Java
- 本文实例为大家分享了Android学习笔记之蓝牙功能的具体代码,供大家参考,具体内容如下蓝牙:短距离无线通讯技术标准。蓝牙协议分为4层,即核
- 题目描述这是 LeetCode 上的 768. 最多能完成排序的块 II ,难度为 困难。Tag : 「贪心」这个问题和&ldquo
- 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是
- 集成配置步骤步骤1:加入 Maven 相关依赖<!-- 指定 Springboot 版本 --><parent> &
- 一、概述之前公司app里面有个功能是一个可以双向滑动的范围选择器,我在网上百度过一些实现方法,感觉各有利弊吧,但是都不太适合我们的需求。所以
- 目录1、在运行时,由java解释器自动引入,而不用import语句引入的包是()。2、以下关于集合类ArrayList、LinkedList
- 一个线程的生命周期:新建状态: 使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态
- 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很
- 前言最近在学习使用 React Native开发,iOS搞完,开始适配安卓,由于木有接触过安卓,所以碰到了很多问题,第一个问题,安卓的返回键
- 概览这部分内容来自于这个类的注释,简单翻译了下。LockSupport 类是用于创建锁和其他同步类的基本线程阻塞原语。它的实现思想
- 前言最近看了一下 Android 上的图表控件,去年做过一款应用也已上架了,也用到了图表控件,但是只是按照官方 demo 集成了,并没有过多
- 1. reference:参考某一资源ID。(1)属性定义:<declare-styleable name = "名称&qu
- 前言内存治理一直是每个开发者最关心的问题,我们在日常开发中会遇到各种各样的内存问题,比如OOM,内存泄露,内存抖动等等,这些问题都有以下共性
- 目录背景介绍项目介绍需要知识点启动项目项目示范核心讲解核心原理功能分析分块上传秒传功能断点续传总结参考文献背景介绍 Breakpoint-
- 目录环境依赖数据源方案一 使用 Spring Boot 默认配置方案二 手动创建脚本初始化使用 JdbcTemplate 操作实体对象DAO
- 写在前面所谓异常处理,即让一个程序运行时遇到自己无法处理的错误时抛出一个异常,希望调用者可以发现处理问题.异常处理的基本思想是简化程序的错误
- 本文实例讲述了Java实现的并发任务处理方法。分享给大家供大家参考,具体如下:public void init() { super.init
- 本文实例讲述了C#验证给定字符串是否为数字的方法。分享给大家供大家参考。具体分析如下:这段C#代码用于验证给定的字符串是否为数字,不能用于验