最近前端找工作,對(duì)于算法的要求越來(lái)越高了,出現(xiàn)的頻率很高 ?,F(xiàn)在如果覺(jué)得前端就是畫頁(yè)面,那么文 章就不用看了,現(xiàn)在對(duì)于js代碼質(zhì)量也越來(lái)越高 。下面是對(duì)大前端中的二分算法的具體介紹。
先來(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]
二分就是在中間拆開變成兩個(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ī)状文?/p>
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
不管開頭還是結(jié)尾 還是中間 都穩(wěn)定在 4次之前解決戰(zhàn)斗
同理 100個(gè)數(shù) 找一個(gè)數(shù) 最多7次 40億個(gè)數(shù) 找32次
以上的大前端中的二分算法,你學(xué)會(huì)了嗎?更多關(guān)于前端培訓(xùn)的問(wèn)題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓(xùn)服務(wù)經(jīng)驗(yàn),采用全程面授高品質(zhì)、高體驗(yàn)培養(yǎng)模式,擁有國(guó)內(nèi)一體化教學(xué)管理及學(xué)員服務(wù),助力更多學(xué)員實(shí)現(xiàn)高薪夢(mèng)想。