分享
Golang二分查找
时光少年春 · · 2714 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
注意: 二分查找只适用于有序序列
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
arr := []int{3, 4, 7, 9, 13, 45, 67, 89, 100, 180}
// 排序前的数值
fmt.Println("数组中的数据: ")
fmt.Println(arr)
fmt.Print("输入查找的值: ")
reader := bufio.NewReader(os.Stdin)
str, _ := reader.ReadString('\n')
str = strings.Replace(str, " ", "", -1)
str = strings.Replace(str, "\n", "", -1)
m, _ := strconv.Atoi(str)
low, k := 0, 0
high := len(arr) - 1
for {
if low > high {
break
}
mid := (low + high) / 2
if m > arr[mid] {
low = mid + 1
} else if m < arr[mid] {
high = mid - 1
} else {
k = mid
break
}
}
if k > 0 {
fmt.Printf("m = %d, k = %d \n", m, k)
} else {
fmt.Println("Not be found!")
}
}
结果
屏幕快照 2020年03月14日 22.48.47.png
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信2714 次点击
上一篇:ORM框架gorm的介绍和使用
下一篇:go语法
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
注意: 二分查找只适用于有序序列
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
arr := []int{3, 4, 7, 9, 13, 45, 67, 89, 100, 180}
// 排序前的数值
fmt.Println("数组中的数据: ")
fmt.Println(arr)
fmt.Print("输入查找的值: ")
reader := bufio.NewReader(os.Stdin)
str, _ := reader.ReadString('\n')
str = strings.Replace(str, " ", "", -1)
str = strings.Replace(str, "\n", "", -1)
m, _ := strconv.Atoi(str)
low, k := 0, 0
high := len(arr) - 1
for {
if low > high {
break
}
mid := (low + high) / 2
if m > arr[mid] {
low = mid + 1
} else if m < arr[mid] {
high = mid - 1
} else {
k = mid
break
}
}
if k > 0 {
fmt.Printf("m = %d, k = %d \n", m, k)
} else {
fmt.Println("Not be found!")
}
}
结果
屏幕快照 2020年03月14日 22.48.47.png