이진 탐색은 검색할 데이터의 양을 지속적으로 줄임으로써 검색어가 발견되는 속도를 높임으로써 목록 내의 요소를 찾는 데 사용되는 탐색 전략입니다. 이진 탐색 알고리즘을 사용하려면 작동할 목록이 이미 정렬되어 있어야 합니다.
package main
import "fmt"
func binarySearch(needle int, haystack []int) bool {
low := 0
high := len(haystack) - 1
for low <= high{
median := (low + high) / 2
if haystack[median] < needle {
low = median + 1
}else{
high = median - 1
}
}
if low == len(haystack) || haystack[low] != needle {
return false
}
return true
}
func main(){
items := []int{1,2, 9, 20, 31, 45, 63, 70, 100}
fmt.Println(binarySearch(63, items))
}
Golang Algorithm - Interpolation Search (0) | 2023.02.11 |
---|---|
Go 언어를 기반으로한 블록체인 개발공부(Proof of Stake) - Part 4 (0) | 2023.02.11 |
Golang Algorithm - Linear Search - 선형 검색 (0) | 2023.02.10 |
Go 언어를 기반으로한 블록체인 개발공부(Power of Work) - Part 3 (0) | 2023.02.10 |
Go 언어를 기반으로한 블록체인 개발공부(Network) - Part 2 (0) | 2023.02.09 |