package main
import "fmt"
var Time = 1
// 折半 搜索
func main() {
index := binarySearch([]int{1, 2, 3, 4, 9}, 9)
if index < 0 {
fmt.Print("failed")
} else {
fmt.Println("success index:", index)
}
fmt.Println("===second way:", binarySearch2([]int{1, 2, 3, 4, 9}, 0, 4, 9, &Time))
fmt.Println("---Time:", Time)
}
func binarySearch(list []int, key int) int {
if 0 == len(list) {
return -1
}
time := 0
low := 0
high := len(list) - 1
for low <= high {
time++
mid := (low + high) / 2
if key < list[mid] {
high = mid - 1
} else if key > list[mid] {
low = mid + 1
} else {
fmt.Println("find times:", time)
return mid
}
}
return -1
}
func binarySearch2(list []int, low, high, key int, Time *int) int {
if low > high {
return -1
}
*Time++
mid := (low + high) / 2
if key < list[mid] {
return binarySearch2(list, low, mid-1, key, Time)
}
if key > list[mid] {
return binarySearch2(list, mid+1, high, key, Time)
}
return mid
}
折半/二分查找
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 查找概念 查找(Searching): 即根据给定的某个值,在查找表中确定一个其关键字给定值的数据元素(或记录)。...