# 演算法 in Go:Binary Search(二分查找) ## Binary Search(二分查找) ### Binary Search(二分查找) - 猜數 - 1、2、3、4、5、6、7、8 - 排好序一個集合,先從中間開始猜,根據提示就可以排除一半,在剩餘的一半里,再從中間開始猜,依此類 ...
演算法 in Go:Binary Search(二分查找)
Binary Search(二分查找)
Binary Search(二分查找)
- 猜數
- 1、2、3、4、5、6、7、8
- 排好序一個集合,先從中間開始猜,根據提示就可以排除一半,在剩餘的一半里,再從中間開始猜,依此類推,這就是二分查找。
Binary Search(二分查找)接收什麼參數,返回什麼值
- 輸入:排好序的集合
- 如果要查找的元素在集合中:返回位置(索引)
- 否則:返回空
Binary Search(二分查找)其它查找方式
- 如果查找?
- [1,2,3,4,5,...56,57,58...98,99,100]
- 順序的簡單查找(simple search)
- 更好的辦法:從中間開始,每次都能排除一半的元素,這叫二分查找
- [1,2,3,4,5...98,99.100],查找任何一個元素,最多只需要7步
- [1,2,3,4,5...239998,239999,240000]
- 二分查找,最多只需要 18步
- 簡單查找,最多需要 24 萬步
- 針對擁有 n 哥元素的已排序集合:
- 二分查找:log2^n
- 簡單查找:n
註意
- 二分查找只適用於已排序的集合
創建項目
~/Code/go via