首页 > 编程语言 >【算法】二分查找实现过程

【算法】二分查找实现过程

时间:2023-08-21 12:33:48浏览次数:55  
标签:二分 arr int mid 算法 查找 left

1、二分查找的基本思想是,要查找的值和整个数组序列的中间值做比较,确认该值在其中一半里,只要在数组序列一半中继续搜索。

2、采用二分查找方法的前提条件是数组或线性表中元素必须按照大小有序排列。代码如下,

int main() {

	int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
	int k = 7;

	int sz = sizeof(arr) / sizeof(arr[0]);
	int left = 0;
	int right = sz;
	int mid = 0;

	printf("输入要找的数字:");
	scanf("%d", &k);

	while (left <= right) {

		mid = (left + right) / 2;

		if (arr[mid] > k) {
			right = mid - 1;
		} else if (arr[mid] < k) {
			left = mid + 1;
		} else {
			printf("找到了,下标是:%d\n", mid);
			break;
		}
	}
}

输出结果:

【算法】二分查找实现过程_有序数组

标签:二分,arr,int,mid,算法,查找,left
From: https://blog.51cto.com/wurubin/7173727

相关文章

  • c++算法之哈希表
    啥是哈希表 哈希表,类似散列表,是一种存储数据的一种方式。只能说是有点奇葩。他是通过将值转换成数组的下标,也就是f[x]=x的意思,大家估计都能理解吧......
  • 数据结构与算法八股
    讲一讲插入排序讲一讲冒泡排序讲一讲快速排序讲一讲堆排序讲一讲归并排序 dpdp数组的定义及含义:dp[num1.length+1][num2.length+1],为什么要+1呢,因为我们要判断他与前面的关系涉及到i-1,所以遍历需要从1开始return的是什么如果初始化时候size+1了,那么最后一个下标就是size......
  • FlashAttention算法详解
    这篇文章的目的是详细的解释FlashAttention,为什么要解释FlashAttention呢?因为FlashAttention是一种重新排序注意力计算的算法,它无需任何近似即可加速注意力计算并减少内存占用。所以作为目前LLM的模型加速它是一个非常好的解决方案,本文介绍经典的V1版本,最新的V2做了其他优化我们......
  • 【算法】用c#实现自定义字符串编码及围栏解码方法
    编写一个函数/方法,它接受2个参数、一个字符串和轨道数,并返回ENCODED字符串。编写第二个函数/方法,它接受2个参数、一个编码字符串和轨道数,并返回DECODED字符串。然后使用围栏密码对其进行解码。这种密码用于通过将每个字符沿着一组“竖状轨道”依次放在对角线上来对字符串进行编......
  • 分布式共识算法之Raft设计与实现
    如何理解分布式共识?多个参与者针对某一件事达成完全一致:一件事,一个结论已达成一致的结论,不可推翻有哪些分布式共识算法?Paxos:被认为是分布式共识算法的根本,其他都是其变种,但是Paxos论文中只给出了单个提案的过程,并没有给出复制状态机中需要的multi-paxos的相关细节......
  • CGAL入门——凸壳算法
    一、凸壳算法凸壳是能包含点集合的最小凸多边形,即凸壳是点集合的一个子集,将这个子集的点连接起来可以包含点集中所有的点。 二、数组中点的凸壳#include<iostream>#include<CGAL/Exact_predicates_inexact_constructions_kernel.h>#include<CGAL/convex_hull_2.h>......
  • Bcrypt加密算法相关
    简介Bcrypt是一个跨平台的文件加密工具,由它加密的文件可在所有支持的操作系统和处理器上进行转移。它的口令必须是8至56个字符,并将在内部被转化为448位的密钥。spring-security内部就是使用这个算法来对用户密码加密的(BCryptPasswordEncoder)。使用maven依赖<dependency><......
  • 开源.NetCore通用工具库Xmtool使用连载 - 散列算法篇
    【Github源码】《上一篇》详细介绍了Xmtool工具库中的加解密类库,今天我们继续为大家介绍其中的散列算法类库。散列算法在某些特殊场景也可以当做加密方法使用;其特点是不可逆,同一内容每次散列值绝对一致,所以也可用作对数据内容是否被篡改的校验方法;或者其他需要唯一性编码的场景;本......
  • 2023-08-20:用go语言写算法。给定一个由'W'、'A'、'S'、'D'四种字符组成的字符串,长度一
    2023-08-20:用go语言写算法。给定一个由'W'、'A'、'S'、'D'四种字符组成的字符串,长度一定是4的倍数,你可以把任意连续的一段子串,变成'W'、'A'、'S'、'D'组成的随意状态,目的是让4种字符词频一样。返回需要修改的最短子串长度。完美走位问题。输入:s="QQQW"。输出:2。解释:我们......
  • 2023-08-20:用go语言写算法。给定一个由'W'、'A'、'S'、'D'四种字符组成的字符串,长度一
    2023-08-20:用go语言写算法。给定一个由'W'、'A'、'S'、'D'四种字符组成的字符串,长度一定是4的倍数,你可以把任意连续的一段子串,变成'W'、'A'、'S'、'D'组成的随意状态,目的是让4种字符词频一样。返回需要修改的最短子串长度。完美走位问题。输入:s="QQQW"。输出:2。解释:我们可以把前......