本教程帮助在 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)
	}
}
(adsbygoogle = window.adsbygoogle || []).push({});