千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > 前端技巧|算法入門之“二分算法”

前端技巧|算法入門之“二分算法”

來(lái)源:千鋒教育
發(fā)布人:小千
時(shí)間: 2021-05-25 09:28:00 1621906080

      現(xiàn)如今面試大廠的前端崗位對(duì)于應(yīng)聘者的算法技巧要求越來(lái)越高,現(xiàn)在的前端已經(jīng)不僅僅是制作頁(yè)面就能夠交差的,所以掌握算法技巧是很重要的,下面小千就來(lái)給大家介紹一個(gè)二分查找算法。

前端

      二分查找

      所謂的算法都不是直接使用關(guān)鍵字indexOf fifindIncludes之類的, 都是原生循環(huán)來(lái)實(shí)現(xiàn)。

      二分 就是一拆為2 比如一個(gè)集合:let list = [1,2,3,4,5,6,7]

      二分就是在中間拆開(kāi)變成兩個(gè)數(shù)組

      list1=[1,2,3,4]

      list2 =[5,6,7]

      二分用在哪些地方?

      主要有有序數(shù)組的查找,但是說(shuō) list= [1.....10] 可能肉眼就知道。但是如果list = [1000,20000] 要找查找某個(gè)數(shù)位置 就觀察不出來(lái)了,更甚至 list = 一千人的電話號(hào)碼 要查找某一個(gè)。二分不是絕對(duì)的性能優(yōu)秀 所有的優(yōu)秀的 都是對(duì)比的。

      現(xiàn)在有一個(gè)集合放1到10 要找9的的位置,普通的循環(huán)要找9次 二分找?guī)状文兀?/span>

      let list = [1,2,3,4,5,6,7,8,9,10]

      第一次中間數(shù) 5,6都可以 目標(biāo)數(shù)9

      假設(shè):

      middle =5

      target=9

      9>5 下次查找的區(qū)間 就用二分的后者 [5,6,7,8,9,10]

      接著

      middle = 7

      target = 9

      9>7 下次查找的區(qū)間 就繼續(xù)二分為 [7,8,9,10]

      繼續(xù)

      middle=8

      target=9

      9>8 下次查找的區(qū)間 [8,9,10]

      繼續(xù)

      middle = 9

      target= 9

      這樣就找到9的位置

      都是折疊查找 查找的次數(shù)比較穩(wěn)定長(zhǎng)度為8的集合 最多3次 就能找到數(shù)

      log 8=2

      就是同理 16個(gè)數(shù) 最多需要幾次 2 ? = 16 結(jié)果是4 最多查找四次

      log16= 4

代碼示例

      不管開(kāi)頭還是結(jié)尾 還是中間 都穩(wěn)定在 4次之前解決戰(zhàn)斗,同理 100個(gè)數(shù) 找一個(gè)數(shù) 最多7次 40億個(gè)數(shù) 找32次。你學(xué)會(huì)了嗎?

      以上就是二分查找算法的介紹了,是不是比你原本使用的方式更好呢?最后歡迎對(duì)前端開(kāi)發(fā)感興趣的同學(xué)來(lái)到千鋒大前端培訓(xùn)班了解我們的前端培訓(xùn)課程,包含算法課程,全程名師面授,現(xiàn)在咨詢還有免費(fèi)前端學(xué)習(xí)資料可以領(lǐng)取,快來(lái)找在線老師了解一下吧。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
oracle怎么樣實(shí)現(xiàn)數(shù)據(jù)庫(kù)跨機(jī)房同步?

一、oracle怎么樣實(shí)現(xiàn)數(shù)據(jù)庫(kù)跨機(jī)房同步除了使用第三方工具,Oracle提供了extended cluster可以實(shí)現(xiàn)類似的功能,使用Oracle RAC + ASM。簡(jiǎn)單說(shuō)下...詳情>>

2023-10-14 01:57:43
web網(wǎng)站性能測(cè)試的常用指標(biāo)有哪些?

一、頁(yè)面加載時(shí)間頁(yè)面加載時(shí)間是衡量網(wǎng)站性能的重要指標(biāo)之一,它指的是從用戶請(qǐng)求一個(gè)頁(yè)面到頁(yè)面完全加載完成所需的時(shí)間。頁(yè)面加載時(shí)間的長(zhǎng)短直...詳情>>

2023-10-14 01:50:34
MySQL索引為什么能讓查詢效率提高?

一、MySQL索引為什么能讓查詢效率提高DB在執(zhí)行一條Sql語(yǔ)句的時(shí)候,默認(rèn)的方式是根據(jù)搜索條件進(jìn)行全表掃描。如果我們對(duì)某一字段增加索引,查詢時(shí)...詳情>>

2023-10-14 01:38:15
什么是面向云原生系統(tǒng)的智能運(yùn)維?

一、云原生系統(tǒng)概述云原生系統(tǒng)是指在云計(jì)算環(huán)境下構(gòu)建和運(yùn)行的應(yīng)用程序系統(tǒng),具備高可用、彈性擴(kuò)展、靈活部署和自動(dòng)化管理等特點(diǎn)。它采用容器化...詳情>>

2023-10-14 01:25:33
怎么提升excel數(shù)據(jù)表訪問(wèn)運(yùn)算速度?

一、怎么提升excel數(shù)據(jù)表訪問(wèn)運(yùn)算速度目前版本Excel最大列數(shù)為16384,沒(méi)有10w加。運(yùn)算速度和Excel中是否有公式、公式的復(fù)雜度、對(duì)象的對(duì)少、格...詳情>>

2023-10-14 01:22:48
快速通道