前端技術分享:演算法入門之“二分演算法”
現如今面試大廠的前端崗位對於應聘者的演算法技巧要求越來越高,現在的前端已經不僅僅是製作頁面就能夠交差的,所以掌握演算法技巧是很重要的,下面小千就來給大家介紹一個二分查詢演算法。
二分查詢
所謂的演算法都不是直接使用關鍵字indexOf fifindIncludes之類的, 都是原生迴圈來實現。
二分 就是一拆為2 比如一個集合:let list = [1,2,3,4,5,6,7]
二分就是在中間拆開變成兩個陣列
list1=[1,2,3,4]
list2 =[5,6,7]
二分用在哪些地方?
主要有有序陣列的查詢,但是說 list= [1.....10] 可能肉眼就知道。但是如果list = [1000,20000] 要找查詢某個數位置 就觀察不出來了,更甚至 list = 一千人的電話號碼 要查詢某一個。 二分不是絕對的效能優秀 所有的優秀的 都是對比的。
現在有一個集合放1到10 要找9的的位置,普通的迴圈要找9次 二分找幾次呢?
let list = [1,2,3,4,5,6,7,8,9,10]
第一次中間數 5,6都可以 目標數9
假設:
middle =5
target=9
9>5 下次查詢的區間 就用二分的後者 [5,6,7,8,9,10]
接著
middle = 7
target = 9
9>7 下次查詢的區間 就繼續二分為 [7,8,9,10]
繼續
middle=8
target=9
9>8 下次查詢的區間 [8,9,10]
繼續
middle = 9
target= 9
這樣就找到9的位置
都是摺疊查詢 查詢的次數比較穩定長度為8的集合 最多3次 就能找到數
log 8=2
就是同理 16個數 最多需要幾次 2 ? = 16 結果是4 最多查詢四次
log16= 4
不管開頭還是結尾 還是中間 都穩定在 4次之前解決戰鬥,同理 100個數 找一個數 最多7次 40億個數 找32次。你學會了嗎?
以上就是二分查詢演算法的介紹了,是不是比你原本使用的方式更好呢?
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2773792/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 前端演算法入門 - 走近紅黑樹前端演算法
- 好程式設計師Java培訓分享演算法入門到精通之-演算法概述程式設計師Java演算法
- AI考拉技術分享–Scrum入門AIScrum
- AI考拉技術分享--Scrum入門AIScrum
- Java技術分享:小白如何入門Mybatis?JavaMyBatis
- 入門web前端需要掌握的技術Web前端
- web前端技術分享Electron之Renderer Process APIWeb前端API
- web前端技術分享Electron之IPC 通訊Web前端
- 排序演算法入門之「選擇排序」排序演算法
- 排序演算法入門之「插入排序」排序演算法
- 排序演算法之——二分插入排序演算法排序演算法
- 技術分享| anyRTC回聲消除演算法進化演算法
- 入門 Web前端需要學習哪些技術?Web前端
- web前端技術分享之頁面元素水平居中Web前端
- 好程式設計師Java培訓分享演算法入門到精通之02演算法複雜度(一)程式設計師Java演算法複雜度
- 容器技術之Docker基礎入門Docker
- 前端面試(演算法篇) – 二分法前端面試演算法
- 前端開發中的二分查詢演算法前端演算法
- 二分演算法演算法
- 演算法基礎---二分演算法演算法
- LeetCode入門指南 之 二分搜尋LeetCode
- 聊聊二分演算法演算法
- 1.3二分演算法演算法
- 前端學習 資料結構與演算法 快速入門 系列 —— 排序和搜尋演算法前端資料結構演算法排序
- Web 前端小白入門(一):心路歷程,非技術指南Web前端
- drools 入門(五) - RETE演算法演算法
- 前端學習 資料結構與演算法 快速入門 系列 —— 棧前端資料結構演算法
- 前端演算法之彈幕設計前端演算法
- 演算法->二分查詢演算法
- 【演算法】二分查詢演算法
- Linux入門防火牆面試題有哪些?Linux技術分享Linux防火牆面試題
- 前端技術分享:JavaScript正則全面解析前端JavaScript
- 前端非同步技術之Promise前端非同步Promise
- 經典加密演算法入門-RSA加密演算法
- acm/icpc入門級演算法模板ACM演算法
- 排序演算法入門:選擇排序排序演算法
- Java入門:水仙花演算法Java演算法
- 公司內部技術分享之Vue.js和前端工程化Vue.js前端