自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

簡述二分查找算法與時間復(fù)雜度,并實現(xiàn)一個二分查找算法

網(wǎng)絡(luò) 通信技術(shù) 算法
二分查找也稱折半查找算法,它是一種簡單易懂的快速查找算法。例如我隨機(jī)寫0-100之間的一個數(shù)字,讓你猜我寫的是什么?你每猜一次,我就會告訴你猜的大了還是小了,直到猜中為止。

[[432404]]

二分查找也稱折半查找算法,它是一種簡單易懂的快速查找算法。例如我隨機(jī)寫0-100之間的一個數(shù)字,讓你猜我寫的是什么?你每猜一次,我就會告訴你猜的大了還是小了,直到猜中為止。

該算法要求待查找的數(shù)組已排序,實現(xiàn)步驟如下:

  • 選擇數(shù)組中的中間數(shù)
  • 查找數(shù)與中間數(shù)對比,比中間數(shù)低,則去中間數(shù)左邊的子數(shù)組中尋找;比中間數(shù)高,則去中間數(shù)右邊的子數(shù)組中尋找;相等則返回查找成功
  • 重復(fù)上一步,知道查找成功或失敗
  1. function binarySearch(items, item) { 
  2.     var low = 0, 
  3.         high = items.length - 1, 
  4.         mid, elem 
  5.     while(low <= high) { 
  6.         mid = Math.floor((low+high)/2) 
  7.         elem = items[mid] 
  8.         if(elem < item) { 
  9.             low = mid + 1 
  10.         } else if(elem > item) { 
  11.             high = mid - 1 
  12.         } else { 
  13.             return mid 
  14.         } 
  15.     } 
  16.     return -1 
  17.  
  18. // 測試 
  19. var arr = [2,3,1,4] 
  20. // 快排 
  21. quickSort(arr) 
  22.  
  23. binarySearch(arr, 3) 
  24. // 2 
  25.  
  26. binarySearch(arr, 5) 
  27. // -1 

測試成功

二分查找易錯點(diǎn):

  • 循環(huán)退出條件是low <= high ,注意是 <=
  • mid 的取值是 Math.floor((low+high)/2)
  • low high 每次更新的時候,low = mid + 1 high = mid - 1

二分查找局限性:

  • 針對的對象是數(shù)組結(jié)構(gòu),因為是通過下標(biāo)來隨機(jī)訪問元素
  • 數(shù)組必須有序
  • 數(shù)組太小不合適,直接使用順序查找即可
  • 數(shù)組太長不合適,數(shù)組要求連續(xù)的內(nèi)存空間,數(shù)組太長不利于存儲

時間復(fù)雜度:O(logn)

空間復(fù)雜度:O(1)

 

leetcode:https://leetcode-cn.com/problems/binary-search/solution/er-fen-cha-zhao-by-user7746o/

 

責(zé)任編輯:武曉燕 來源: 三分鐘學(xué)前端
相關(guān)推薦

2022-03-28 10:03:58

二分查找算法

2020-12-08 06:32:04

Kafka二分查找

2021-04-23 09:12:09

Java數(shù)據(jù)結(jié)構(gòu)算法

2022-12-05 09:42:14

C++Python算法

2022-03-29 07:52:21

運(yùn)用技巧二分查找

2021-04-27 06:21:29

Java數(shù)據(jù)結(jié)構(gòu)算法

2022-03-18 08:37:12

二分查找算法元素

2022-02-15 08:25:22

hash表快排二分查找

2023-12-22 09:37:13

二分查找數(shù)組數(shù)據(jù)庫

2020-12-04 10:13:09

算法二分法效率

2023-09-16 18:35:53

二分查找算法

2021-09-10 09:58:35

AvlBST時間

2024-04-25 08:33:25

算法時間復(fù)雜度空間復(fù)雜度

2021-06-28 06:15:14

算法Algorithm時間空間復(fù)雜度

2021-01-05 10:41:42

算法時間空間

2022-04-13 09:30:00

C++二分圖圖著色

2021-10-14 07:55:20

二分查找面試

2020-12-30 05:35:56

數(shù)據(jù)結(jié)構(gòu)算法

2022-06-26 00:29:26

分布式系統(tǒng)Redis

2019-11-18 12:41:35

算法Python計算復(fù)雜性理論
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號