首页 > 编程语言 >一个看似简单的查找算法 —— 二分查找算法

一个看似简单的查找算法 —— 二分查找算法

时间:2023-12-24 16:11:39浏览次数:34  
标签:二分 逻辑 一个 算法 查找 简单

前言

二分查找算法应该是非常常见的一个算法了,查找速度快,算法逻辑简单是大家对该算法的一个大致印象。

相信有很多同学能够在很短的时间内写出一个二分查找算法,即便记不太清二分查找算法的逻辑,稍微搜一下,瞟一眼,就能迅速回忆起该算法的大致逻辑,然后迅速写出来该算法。

但是,实际上二分查找算法可不只是那么简单的一个算法,据说第一个二分查找算法与1946年出现,但是第一个完全正确的二分查找算法实现直到1962年才出现。

有很多的边界问题,是不太好处理的。题主这篇文章所阐述的二分查找算法也有可能不是一个完善的算法,但是会尽力把目前我所知道的一些坑给解决掉。

示例

先从一个小小的例子说起:

假设我们有一个循环数组:[4, 5, 6, 1, 2, 3],如何在该数组上实现一个找出给定值位置的二分查找算法呢?

 

 

 

 

未完待续。。。

标签:二分,逻辑,一个,算法,查找,简单
From: https://www.cnblogs.com/moretwicelove/p/17924487.html

相关文章

  • 强化学习算法真的适合于你的应用吗 —— 强化学习研究方向(研究领域)现有的不足(短板、
    外文原文:WhyYou(Probably)Shouldn’tUseReinforcementLearning地址:https://towardsdatascience.com/why-you-shouldnt-use-reinforcement-learning-163bae193da8中文翻译版本(ChatGPT3.5翻译:)有关这项技术存在很大的炒作,而且理由充分,因为这可能是实现通用人工智能的......
  • 算法复习 DFS两题
    全排列模版题AcWing842.排列数字#include<cstdio>#include<vector>#include<queue>#include<cstring>#include<algorithm>#include<iostream>#include<stack>usingnamespacestd;typedeflonglongll;typedefpair&l......
  • 双指针算法-最长不重复子序列
    思路这里的i才是主要的遍历指针,j是用来剔除元素以满足题目要求的。代码#include<iostream>usingnamespacestd;constintN=1e5+10;intn,res;inta[N],s[N];intmain(){cin>>n;for(inti=0;i<n;i++)cin>>a[i];for(int......
  • 详解十大经典排序算法(六):快速排序(QuickSort)
    算法原理分区(Partition):选择一个基准元素,将数组分为两个子数组,小于基准的放在左边,大于基2准的放在右边。递归排序:对左右两个子数组分别进行快速排序。合并:不需要实际的合并操作,因为在分解和递归排序阶段已经完成了排序。算法描述快速排序是一种基于分治思想的高效排序算法,由英国......
  • 二分——lower_bound&upper_bound写法
    底层实现#include<bits/stdc++.h>#definelllonglongusingnamespacestd;lllower_bound(vector<ll>&nums,llx){ llleft=0; llright=nums.size()-1; while(left<=right) { llmid=left+(right-left)/2; if(x>nums[mid]) left=mid+1......
  • 算法学习笔记五一快速排序
    目录什么是快速排序算法思想示例代码什么是快速排序快速排序(Quicksort)是一种常用的排序算法,它的基本思想是通过分治的策略将一个大问题划分为多个小问题来解决。它的平均时间复杂度为O(nlogn),最坏情况(有序情况)为O(n^2)。是一种高效的排序算法。算法思想选择一个基准元素(pivot......
  • 代码随想录算法训练营第十一天|20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150
    一、20.有效的括号题目链接:LeetCode20.有效的括号学习前:思路:当前元素为左括号,直接入栈当前元素为右括号,若找到对应的左括号匹配,则循环继续;反之返回false若栈为空,返回true;反之false时间复杂度:O(n)空间复杂度:O(n)学习后:采用入栈右括号,降低复杂度。即当遇到左......
  • 字节国际化TnS算法实习的碎碎念
    Motivation在保研之后,我和南大的导师投了一篇个性化联邦学习的CVPR作为毕设。之后感觉就没什么事了,于是想着找个实习吧,第一个想法就是去字节实习,也只投了字节(别学我,还是多投一些哈哈,找不到实习就g了)。面试过程因为是日常实习,所以就是两轮技术加一轮hr面,虽然师兄说比较简单,但我......
  • 关于Secure Hash Algorithm加密算法
    一、概述SHA(SecureHashAlgorithm)加密算法是一种广泛应用的密码散列函数,由美国国家安全局(NSA)设计,用于保障数据的安全性和完整性。SHA算法经历了多个版本的更新,目前主要应用于各种网络安全和数据加密领域。SHA在线加密|一个覆盖广泛主题工具的高效在线平台(amd794.com)http......
  • 机器学习-无监督机器学习-kmeans衍生的算法-18
    目录1.k-Medoids2.二分KMEANS3.KMeans++4.elkanKMeans5.minbatchKMeans算法6.小结:1.k-Medoids之前的kmeans算法对于异常点数据特别敏感,更新中心点的时候,是对于该簇的所有样本点求平均,这种方式对于异常样本特别敏感,kmedoids算法克服这个问题,实现方式所有属于该簇的样......