千鋒長(zhǎng)沙前端培訓(xùn)分享之大前端算法入門之二分查找
現(xiàn)如今面試大廠的前端崗位對(duì)于應(yīng)聘者的算法技巧要求越來越高,現(xiàn)在的前端已經(jīng)不僅僅是制作頁面就能夠交差的,所以掌握算法技巧是很重要的,下面千鋒長(zhǎng)沙前端培訓(xùn)就來給大家介紹一個(gè)二分查找算法。
所謂的算法都不是直接使用關(guān)鍵字indexOf fifindIncludes之類的, 都是原生循環(huán)來實(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ù)組的查找
但是說 list= [1.....10] 可能肉眼就知道
但是如果list = [1000,20000] 要找查找某個(gè)數(shù)位置 就觀察不出來了
更甚至 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
var list = [1,2,3,4,5,6,7,8,9,10];
function search(list,item){
count =1;//計(jì)數(shù)出現(xiàn)的次數(shù)
start = 0;
end = list.length-1;
while(start<=end){
middle =Math.floor((start+end)/2); //取中間下標(biāo)
console.log(middle);
guess = list[middle];
if(guess==item){
return middle; //返回位置
}
if(guess>item){
end = middle;
}else{
start = middle+1
}
count++;
}
return "查不到";
}
let result = search(list,4);
不管開頭還是結(jié)尾 還是中間 都穩(wěn)定在 4次之前解決戰(zhàn)斗
同理 100個(gè)數(shù) 找一個(gè)數(shù) 最多7次 40億個(gè)數(shù) 找32次

猜你喜歡LIKE
最新文章NEW
相關(guān)推薦HOT
更多>>熱門推薦
零基礎(chǔ)必看的前端HTML+CSS教程
沸Java培訓(xùn)新手實(shí)戰(zhàn)必備!單機(jī)版坦克大戰(zhàn)分步實(shí)現(xiàn)項(xiàng)目源碼
熱3種Javascript圖片預(yù)加載的方法詳解
熱長(zhǎng)沙前端培訓(xùn):一招教你用vue3+canvas實(shí)現(xiàn)坦克大戰(zhàn)
新互聯(lián)網(wǎng)涼了?參加長(zhǎng)沙Java培訓(xùn)能找到工作嗎?
長(zhǎng)沙Java培訓(xùn)實(shí)戰(zhàn)項(xiàng)目,出游咨詢訂票系統(tǒng)開發(fā)流程
不參加長(zhǎng)沙Java培訓(xùn)能學(xué)會(huì)Java嗎?2022Java技能學(xué)習(xí)路線圖
千鋒長(zhǎng)沙Java培訓(xùn)分享之怎么學(xué)習(xí)Java集合?
千鋒長(zhǎng)沙前端培訓(xùn)分享之JavaScript面向?qū)ο缶幊趟枷朐斀?/p>
千鋒長(zhǎng)沙前端培訓(xùn)分享之web前端的回流和重繪
千鋒長(zhǎng)沙前端培訓(xùn)分享之3種Javascript圖片預(yù)加載的方法詳解
千鋒長(zhǎng)沙前端培訓(xùn)分享之利用Jest測(cè)試React組件
千鋒長(zhǎng)沙前端培訓(xùn)分享之JavaScript中Slice的用例
千鋒長(zhǎng)沙java培訓(xùn)分享之Socket編程
技術(shù)干貨







快速通道 更多>>
-
課程介紹
點(diǎn)擊獲取大綱 -
就業(yè)前景
查看就業(yè)薪資 -
學(xué)習(xí)費(fèi)用
了解課程價(jià)格 -
優(yōu)惠活動(dòng)
領(lǐng)取優(yōu)惠券 -
學(xué)習(xí)資源
領(lǐng)3000G教程 -
師資團(tuán)隊(duì)
了解師資團(tuán)隊(duì) -
實(shí)戰(zhàn)項(xiàng)目
獲取項(xiàng)目源碼 -
開班地區(qū)
查看來校路線