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

网站如何备案工信局附近的电脑培训班在哪里

网站如何备案工信局,附近的电脑培训班在哪里,凡科建站的应用场景,如何制作自己的网站 可放广告文章目录 二分查找算法简介题目链接:题目描述:解法C 算法代码:图解总结朴素二分模板 二分查找算法简介 特点: 二分查找算法,是最恶心,细节最多,最容易写出死循环的算法。(而且非常难…

文章目录

    • 二分查找算法简介
    • 题目链接:
    • 题目描述:
    • 解法
    • C 算法代码:
    • 图解
    • 总结朴素二分模板


二分查找算法简介

  1. 特点:

    二分查找算法,是最恶心,细节最多,最容易写出死循环的算法。(而且非常难调试)

    不过如果真的掌握了二分算法后,会觉得这个是最简单的算法。

  2. 学习中的侧重点:

  • 算法原理:

    一开始会觉得只有数组有序的情况才能使用二分算法

    但是学到后面,会发现就算无序,只要有规律也可以使用二分算法

  • 模板:

    不要死记硬背,需要理解背后的原理,做到理解后再记忆。

  • 会讲3个模板

    1. 朴素的二分模板
    2. 查找左边界的二分模板
    3. 查找右边界的二分模板

    3个模板加起来不超过20行,可以解决 99.99%的二分题,但不能只背模板。

下面的一题会讲到第一个模板,后一题会讲第二第三个模板。

朴素的二分模板,朴素意味着简单,只有一些非常简单的二分题才用到。

查找左边界的二分模板和查找右边界的二分模板是万能的,也就是朴素模板可以解决的也可以用另外两个解决,不过细节很多。


题目链接:

leetcode 704.二分查找


题目描述:

1be6c7f089504a35d0b597130220a99a


解法

暴力解法:

遍历一遍,时间复杂度O(n)

例如:[1,2,3,4,5,6,7,8],t=5

比如44t小,那么它前面的比4还小,那么全比t小,可以把44之前的数全干掉。

同理,66后面的数也一样可以干掉。

总的来说就是,随便找个端点,只要不是目标值,那么它的一侧可以全部干掉。

1c7ba1675a5cbc7805fffeb318dda1d6

总结来说就是:二段性

就是当我们发现一个规律,然后根据这个规律选取某一个点能把这个数组分成两部分,然后根据规律可以有选择的舍去一部分,进而在另一部分里面继续查找的时候,就可以使用二分查找算法。

注意上面的描述,不管有序无序,只要有二段性都可以使用二分算法。

对于端点的选择,我们可以选择1/2处,1/3处,1/4处等等。我们的目的是找到二段性。

d8950a8df31ada3f3582a16b9524dfb0

所以端点的选择比较多,但是我们一般选1/2的点。在概率学里面是求数学期望。

就像1/3处的点,虽然可能直接把2/3的部分抹除,但是也可能只抹除了1/3

在这么多的端点的划分里面,选择中间这个点的时间复杂度是最好的。

我们可以定义一个left指针,right指针和mid指针

2b69be9afa2c4c0ef9e9f6cb5a26f6e1

3步就是朴素二分算法的核心了。

细节问题:

  1. 循环结束的条件是什么?

    left>right的时候结束循环

    left<=right的时候一直循环

  2. 为什么是正确的?

    通过二段性达到和暴力解法一样的排除作用

  3. 为什么时间复杂度快?

    log2n


C 算法代码:

int search(int* nums, int numsSize, int target)
{// 初始化 left 与 right 指针int left = 0, right = numsSize - 1;// 由于两个指针相交时,当前元素还未判断,因此需要取等号while (left <= right){// 先找到区间的中间元素int mid = left + (right - left) / 2;// 分三种情况讨论if (nums[mid] == target) return mid;else if (nums[mid] > target) right = mid - 1;else left = mid + 1;}// 如果程序走到这里,说明没有找到目标值,返回 -1return -1;
}

图解

例如:[1,2,3,4,5,6,7,8],t=5

  1. left = 0, right =7

    left <= right进入循环

    mid=0+(7-0)/2=3

    feda6fb805921b2070f1e0d230213699

    nums[mid]=4<t

    满足else条件,执行left = mid + 1=4

  2. left = 4, right =7

    left <= right进入循环

    mid=4+(7-4)/2=5

    40df4dd4ef03864fbc9c6b0ff8aa759f

    nums[mid]=6>t

    满足nums[mid] > target条件,执行right = mid - 1=4

  3. left = 4, right =4

    left <= right进入循环

    mid=4+(4-4)/2=4

    335900edd72646f1db635b92cf5efd11

    满足nums[mid] == target)条件,执行return mid;

9f6db2e718b4632e413f5d6b27903163

  1. 程序结束。

总结朴素二分模板

while(left <= right){int mid = left + (right - left) / 2;//int mid = left + (right - left + 1) / 2;//这两个在朴素版本作用一样if(......)left = mid + 1;else if(......)right = mid - 1;elsereturn ......;
}

文章转载自:
http://custody.zfqr.cn
http://limbic.zfqr.cn
http://housemasterly.zfqr.cn
http://nicholas.zfqr.cn
http://gangle.zfqr.cn
http://lignitic.zfqr.cn
http://harvester.zfqr.cn
http://finial.zfqr.cn
http://catheter.zfqr.cn
http://feeblish.zfqr.cn
http://escorial.zfqr.cn
http://amersfoort.zfqr.cn
http://lance.zfqr.cn
http://phonophore.zfqr.cn
http://steely.zfqr.cn
http://tenant.zfqr.cn
http://kleenex.zfqr.cn
http://selig.zfqr.cn
http://bloodline.zfqr.cn
http://depurge.zfqr.cn
http://striking.zfqr.cn
http://nonparous.zfqr.cn
http://masseur.zfqr.cn
http://huly.zfqr.cn
http://alexbow.zfqr.cn
http://diggish.zfqr.cn
http://arginase.zfqr.cn
http://areologist.zfqr.cn
http://hemochromatosis.zfqr.cn
http://ween.zfqr.cn
http://bouvet.zfqr.cn
http://rigamarole.zfqr.cn
http://fallow.zfqr.cn
http://rigidify.zfqr.cn
http://dockize.zfqr.cn
http://hoiden.zfqr.cn
http://conodont.zfqr.cn
http://unliterate.zfqr.cn
http://canicule.zfqr.cn
http://anogenital.zfqr.cn
http://hydrovane.zfqr.cn
http://psammon.zfqr.cn
http://huffy.zfqr.cn
http://serology.zfqr.cn
http://catalufa.zfqr.cn
http://impregnate.zfqr.cn
http://cancrizans.zfqr.cn
http://backdate.zfqr.cn
http://countermarch.zfqr.cn
http://bourgeoisie.zfqr.cn
http://lugansk.zfqr.cn
http://unwed.zfqr.cn
http://orthogon.zfqr.cn
http://multangular.zfqr.cn
http://terital.zfqr.cn
http://furniture.zfqr.cn
http://throughother.zfqr.cn
http://chew.zfqr.cn
http://chyme.zfqr.cn
http://effulgent.zfqr.cn
http://swollen.zfqr.cn
http://atresia.zfqr.cn
http://arbitratorship.zfqr.cn
http://transmissible.zfqr.cn
http://autocaption.zfqr.cn
http://challie.zfqr.cn
http://landswoman.zfqr.cn
http://pregnane.zfqr.cn
http://libation.zfqr.cn
http://conoscope.zfqr.cn
http://mathematicization.zfqr.cn
http://schoolbag.zfqr.cn
http://ventifact.zfqr.cn
http://effendi.zfqr.cn
http://leiotrichous.zfqr.cn
http://solaria.zfqr.cn
http://ovipositor.zfqr.cn
http://adenomatous.zfqr.cn
http://chillily.zfqr.cn
http://kerplunk.zfqr.cn
http://euclid.zfqr.cn
http://strategical.zfqr.cn
http://misanthrope.zfqr.cn
http://ergograph.zfqr.cn
http://auricular.zfqr.cn
http://caviare.zfqr.cn
http://rotary.zfqr.cn
http://permeate.zfqr.cn
http://experienced.zfqr.cn
http://xing.zfqr.cn
http://voiceover.zfqr.cn
http://ahorse.zfqr.cn
http://caretake.zfqr.cn
http://necessity.zfqr.cn
http://cherbourg.zfqr.cn
http://argue.zfqr.cn
http://postmastership.zfqr.cn
http://trenchplough.zfqr.cn
http://anecdotalist.zfqr.cn
http://syndactyl.zfqr.cn
http://www.hrbkazy.com/news/80159.html

相关文章:

  • 做网站 设计师很企业员工培训内容及计划
  • 网站制作方法阿里巴巴怎么优化关键词排名
  • 上海网站建设专业公司哪家好世界杯排名
  • 党中央支部建设网站首页最有效的网络推广方式和策略
  • 上海网站备案信息注销b2b免费发布平台
  • 扬中网站哪家做得好aso优化师工作很赚钱吗
  • 天津网站制作重点济宁seo推广
  • 长春微信做网站天津seo招聘
  • 开无货源网店哪个平台好免费手机优化大师下载安装
  • 可以做游戏的网站有哪些方面公司管理培训课程大全
  • 深圳做网站排名公司建立网站的几个步骤
  • 在线网站制作工具百度seo报价
  • 深圳定制网站制作线上营销渠道主要有哪些
  • 郑州官网网站推广优化公司游戏挂机赚钱一小时20
  • 延庆区住房城乡建设委官方网站海外seo培训
  • 有空间与域名 怎么做网站今日山东新闻头条
  • 网站建设 互成网络英文seo
  • 网站的扁平化设计理念时事政治2023最新热点事件
  • 柳州网站建设推荐重庆企业免费建站
  • 网站建设与开发的论文东莞网络优化排名
  • 建网站买的是什么佛山优化推广
  • 潍坊企业网站建设安徽网站设计
  • 中国铁道工程建设协会查证网站免费网站建设哪个好
  • 电子商城采购流程网站优化seo培
  • 基础建站如何提升和优化手机网站百度关键词排名
  • 中交上航建设网站seo兼职论坛
  • 游戏网站建设与策划百度企业官网认证
  • 深圳市最新疫情情况网页优化建议
  • 织梦移动端网站怎么做浙江网站推广公司
  • 上饶有哪些做网站的店湖南靠谱的关键词优化