前端技術分享:演算法入門之“二分演算法”

千鋒武漢發表於2021-05-25

      現如今面試大廠的前端崗位對於應聘者的演算法技巧要求越來越高,現在的前端已經不僅僅是製作頁面就能夠交差的,所以掌握演算法技巧是很重要的,下面小千就來給大家介紹一個二分查詢演算法。

      二分查詢

      所謂的演算法都不是直接使用關鍵字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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章