本教程帮助在 golang 中创建一个简单的二分法查找,二分查找对于将元素搜索到数组中的搜索技术非常重要,由于数组被分成两个相等的部分,因此二分查找在每一步都减少了一半。
二分查找有以下规则:
- 必须对二分查找输入数组进行排序。
- 查找数组的中间索引。
- 中间元素大于要查找的元素,然后查找数组左边的元素。起始索引为 (mid -1)。
- 中间元素小于要查找的元素,然后查找数组右边部分的元素。结束索引为 (mid+1)
Go语言二分法查找代码示例
package main
import (
"fmt"
_ "os"
)
func main() {
a := []int{6, 8, 31, 54, 67, 71, 84, 95}
fmt.Printf("%v", a)
fmt.Println("\nPlease enter search value?")
var search_elem int
fmt.Scanf("%d", search_elem)
fmt.Println("Read number", search_elem, "from stdin")
var mid int
start := 0
len_arr := len(a) - 1
end := len_arr
for start <= end {
mid = (start + end) / 2
if search_elem == a[mid] {
fmt.Printf("%d found at location %d.\n", search_elem, mid+1)
break
} else if search_elem > a[mid] {
start = mid + 1
} else if search_elem < a[mid] {
end = mid - 1
}
}
if start > end {
fmt.Printf("Not found! %d isn't present in the list.\n", search_elem)
}
}