笔记整理全部整理于文档库页面 点我前往

查找

顺序查找

没什么可说的直接看代码吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
func main (){
var str = []string{"admin", "admin888", "password", "12345"}
var pass = "admin"
var index = -1

for i , _ := range str {
if pass == str[i] {
index = i
break
}
}
if index != -1 {
fmt.Println("FindPass:", str[index])
}
}

二分查找

折半查找,将一个数组不断分成两份,排除掉不需要的一半,查找的前提是该数组是有序数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
func binSearch(num []int, studentID int) int {
left := 0
right := len(num) - 1

for {
if left > right { //在从小到大的有序数组中,左边的元素比右边的大不存在
break
}
mid := (left + right) / 2
if num[mid] < studentID { // 如果取出来的num[mid]比你要的值大,就向右边继续找
left = mid + 1
} else if num[mid] > studentID { // 如果取出来的num[mid]比你要的值小,就向左边继续找
right = mid - 1
} else {
return mid
}
}
return -1
}