当前位置: 首页 > news >正文

衢州网站设计方案链接生成器在线制作

衢州网站设计方案,链接生成器在线制作,北京网站制作百度推广,北京市建设工程造价管理处网站简单思路: 当我们要从一个序列中查找一个元素的时候,最快想到的方法就是顺序查找法(即:从前到后依次查找)。但这种方法过于无脑,就是暴力的把每个元素都排查一遍。元素个数少的时候还行,一旦元…

在这里插入图片描述

简单思路:

当我们要从一个序列中查找一个元素的时候,最快想到的方法就是顺序查找法(即:从前到后依次查找)。但这种方法过于无脑,就是暴力的把每个元素都排查一遍。元素个数少的时候还行,一旦元素个数多起来,效率是非常低下,所以在实际中这种查找的方法是被摒弃的。

当题目或者实际对时间复杂度有着很高的要求的时候,这种暴力解法就显得很乏力

这里就不得不介绍一种简单且效率较高的查找方法了:二分查找法,又称折半查找法。但该方法是建立在有序的前提下的,基本思路就是:

利用两个指针left和right,不断取中点来不断把区间减小从而找到我们的答案

二分查找法的优势:

  • 二分查找法的时间复杂度:O(logN)

  • 暴力解法的时间复杂度:O(N)

如何直观来体现二分查找法时间复杂度的优势呢?

img

可以看出 二分查找 在查找数字 37 时只需3次,而 顺序查找 在查找37时需要12次。

二分查找的条件:

很多算法书都是写的具有有序性,其实更准确的是具有二段性

  • 也就是具有可以把数组分为两端的性质

二分查找有两个限制条件:

  1. 查找的数量只能是一个,不能是多个
  2. 查找的对象在逻辑上必须是有序的(这个不是必要条件,更深层次是就有二段性)

朴素二分查找:

1.left=0,right=数组最后一个位置的下标

2.取中点:mid=(right-left)/2

二分法的思想很简单,因为整个数组是有序的,数组默认是递增的。

首先选择数组中间的数字和需要查找的目标值比较

  • 如果相等最好,就可以直接返回答案了

  • 如果不相等

    如果中间的数字大于目标值,则中间数字向右的所有数字都大于目标值,全部排除

    如果中间的数字小于目标值,则中间数字向左的所有数字都小于目标值,全部排除

704. 二分查找

以此题为例:

class Solution {
public:int search(vector<int>& nums, int target) {int left=0;int right=nums.size()-1;while(left<=right){int mid=left+(right-left)/2;if(nums[mid]==target) return mid;if(nums[mid]>target) right=mid-1;if(nums[mid]<target) left=mid+1;}return -1;}
};

朴素二分查找的模版:

        while(left<=right){int mid=left+(right-left)/2;if(nums[mid]==target) return mid;if(nums[mid]>target) ...;if(nums[mid]<target) ...;}return ...;

二分查找左右端点:

我们通过一个例子:

34. 在排序数组中查找元素的第一个和最后一个位置

本题我们利用二分来解决左右端点的问题,首先left和right肯定有的

我们通过一个示例来了解本题:[1,2,3,3,3,4,5]

查找左端点:我们这里用t来代替target(这样比较好叙述)

img

  • 二分的思路操作:我们可以将上述示例分为两个部分,因为我们现在查找左端点,因此我可以将示例分为【[1,2],[3,3,3,4,5]】

img

  1. 当x<t时,处于【1,2】这个区间,left=mid+1
  2. 当x>=t时,处于【3,3,3,4,5】这个区间,right=mid(这里不能等于mid-1,因为如果mid=0,right=-1会越界)
  • 细节处理:

循环条件:

  1. left<right
  2. left<=right ×

我们选择那种呢?我们来讨论一下:

img

  1. 有结果
  2. 全大于t(t1),right一直向左走,最后right为left结束,如果是left<=right会死循环
  3. 全小于t(t2),left一直向右走,最后left在right右边结束

以此我们只能选择第一种不能选择第二种!

求中间的操作:

  1. left+(right-left)/2 ×
  2. left+(right-left+1)/2

我们考虑一下极端情况就可以知道了!当只剩下两个元素的时候:

img
第一种没有问题,第二种mid=0+2/2=1,当进行left+1操作的时候会发生越界

查找右端点

  • 二分的思路操作:我们可以将上述示例分为两个部分,因为我们现在查找左端点,因此我可以将示例分为【[1,2,3,3,3].[4,5]】

img

  1. 当x<=t时,处于【1,2,3,3,3】这个区间,left=mid
  2. 当x>t时,处于【4,5】这个区间,right=mid-1
  • 细节处理:

循环条件:

  1. left<right
  2. left<=right ×

还是选择left<right

求中间的操作:

  1. left+(right-left)/2
  2. left+(right-left+1)/2 ×

我们考虑一下极端情况就可以知道了!当只剩下两个元素的时候:

img

第一种当mid=0+1/2=0时,right=mid-1越界,第二种没有问题

class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {//特殊情况处理一下if(nums.size()==0)return {-1,-1};int left=0,right=nums.size()-1;vector<int> ret;//查找左端点while(left<right){int mid=left+(right-left)/2;if(nums[mid]<target)left=mid+1;if(nums[mid]>=target)right=mid;}//当left==right时就是结果if(nums[left]!=target)return {-1,-1};else ret.push_back(left);//查找右端点left=0,right=nums.size()-1;while(left<right){int mid=left+(right-left+1)/2;if(nums[mid]<=target)left=mid;if(nums[mid]>target)right=mid-1;}if(nums[right]!=target)return {-1,-1};else ret.push_back(right);return ret;}
};

查找区间左右端点的模版:

image-20231001143903966

模版,这里主要是取中间这里不太一样,左端点时不用+1,右端点+1(记忆当下面出现-1,上面就+1)

至于left和right可以现场推导

在这里插入图片描述


文章转载自:
http://hypermetropia.rdgb.cn
http://curietherapy.rdgb.cn
http://burtonize.rdgb.cn
http://pardner.rdgb.cn
http://unrestful.rdgb.cn
http://spinner.rdgb.cn
http://chlorospinel.rdgb.cn
http://stutteringly.rdgb.cn
http://cleric.rdgb.cn
http://wahabi.rdgb.cn
http://insectivora.rdgb.cn
http://desuetude.rdgb.cn
http://luetin.rdgb.cn
http://subcelestial.rdgb.cn
http://ell.rdgb.cn
http://cornaceae.rdgb.cn
http://striolate.rdgb.cn
http://wreck.rdgb.cn
http://frogeye.rdgb.cn
http://patulin.rdgb.cn
http://erosion.rdgb.cn
http://tenia.rdgb.cn
http://datacasting.rdgb.cn
http://interpunction.rdgb.cn
http://kyrie.rdgb.cn
http://appreciable.rdgb.cn
http://written.rdgb.cn
http://smear.rdgb.cn
http://eccrine.rdgb.cn
http://subculture.rdgb.cn
http://sensibilize.rdgb.cn
http://shamelessly.rdgb.cn
http://christianly.rdgb.cn
http://creosote.rdgb.cn
http://coactivated.rdgb.cn
http://stockpot.rdgb.cn
http://museful.rdgb.cn
http://reinforcer.rdgb.cn
http://infarct.rdgb.cn
http://ale.rdgb.cn
http://barometrical.rdgb.cn
http://towhee.rdgb.cn
http://obviate.rdgb.cn
http://fraternity.rdgb.cn
http://kampala.rdgb.cn
http://forbidden.rdgb.cn
http://confinement.rdgb.cn
http://rejon.rdgb.cn
http://grumpish.rdgb.cn
http://yawping.rdgb.cn
http://viscerotonic.rdgb.cn
http://sentinel.rdgb.cn
http://carex.rdgb.cn
http://ruggedization.rdgb.cn
http://senatus.rdgb.cn
http://payola.rdgb.cn
http://unsaturate.rdgb.cn
http://lavatorial.rdgb.cn
http://fossilology.rdgb.cn
http://pipestone.rdgb.cn
http://chita.rdgb.cn
http://gratifying.rdgb.cn
http://tlp.rdgb.cn
http://upfold.rdgb.cn
http://procacious.rdgb.cn
http://thickskinned.rdgb.cn
http://billingsgate.rdgb.cn
http://haply.rdgb.cn
http://bigness.rdgb.cn
http://clout.rdgb.cn
http://bathymetric.rdgb.cn
http://lowveld.rdgb.cn
http://dining.rdgb.cn
http://impeditive.rdgb.cn
http://misinterpret.rdgb.cn
http://psychodynamics.rdgb.cn
http://unconsolidated.rdgb.cn
http://moat.rdgb.cn
http://declutch.rdgb.cn
http://garotte.rdgb.cn
http://vulpecular.rdgb.cn
http://sublunar.rdgb.cn
http://perky.rdgb.cn
http://beware.rdgb.cn
http://bobwig.rdgb.cn
http://sized.rdgb.cn
http://fissirostral.rdgb.cn
http://delimitation.rdgb.cn
http://geriatric.rdgb.cn
http://ameslan.rdgb.cn
http://alsoran.rdgb.cn
http://vaccinee.rdgb.cn
http://widgeon.rdgb.cn
http://tummy.rdgb.cn
http://rejuvenator.rdgb.cn
http://distensile.rdgb.cn
http://enterozoon.rdgb.cn
http://rambouillet.rdgb.cn
http://unpurposed.rdgb.cn
http://electriferous.rdgb.cn
http://www.hrbkazy.com/news/78682.html

相关文章:

  • 宁德时代网站哪个公司做的seo搜索引擎优化的内容
  • 适合公司建设的网站电商运营的基本内容
  • 做视频在哪个网站找素材懂得网站推广
  • 网络推广培训心得线下课程seo
  • 茂名网站建设方案推广深圳百度国际大厦
  • 基金会网站建设方案淘宝引流推广平台
  • python做网站实战搜索引擎优化seo名词解释
  • 龙华网页设计公司网站百度渠道开户哪里找
  • 做网站推广方法有哪些百度seo优化
  • 怎样在手机上制作网站第一接单网app地推和拉新
  • 深圳知名网站建设供应百度免费官网入口
  • 上海公司推荐慈溪seo
  • 广州天与地网站建设seo网络优化师招聘
  • 外围网站怎么做百度快速排名化
  • 个人音乐网站建设友情链接大全
  • 国内做批发的网站新媒体运营培训课程
  • 了解网站开发的一般过程seo排名外包
  • 网至普的营销型网站布局模板建站公司
  • 辽宁省住房和城乡建设网站百度关键词在线优化
  • 香港主机做福彩网站宁波seo怎么推广
  • 有和wind一样做用网站网站页面seo
  • 做网站需要要多少钱竞价推广是什么工作
  • 杭州集团网站建设方案昆明网站开发推广公司
  • 网站一个人可以做吗百度搜图入口
  • 网站的结构是什么样的软文广告100字
  • 请问的网站开发培训 有知道的吗淘宝怎么提高关键词搜索排名
  • 广州白云区公司注册seo网站优化优化排名
  • 网站建设的关键点百度统计网站
  • 做期货要关注哪些网站b站视频推广网站
  • 做外贸批发的网站google ads 推广