耐心和持久胜过激烈和狂热。
哈喽大家好,我是陈明勇,今天分享的内容使用 Go 实现线性查找算法和二分查找算法。如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨点个关注,一起成长一起进步,如果本文有错误的地方,欢迎指出!
线性查找
线性查找又称顺序查找,它是查找算法中最简单的一种。它的基本思想是在在一组数据中,从第一个元素开始,依次和预期值比较,直到和预期值相等,则查找成功,如果所有元素都比较过,没找到与预期值相等的严肃,则查找失败。
算法
func LinearSearch(nums []int, target int) int {
for i, num := range nums {
if num == target {
return i
}
}
return -1
}
算法很简单,遍历 nums
切片,然后依次比较,找到与 target
相等的元素则返回该元素在切片中的下标值,否则返回 -1
,表示没有找到与 target
相等的元素。
该算法的时间复杂度为 O(N)。可以发现,如果切片里有很多元素,然后要查找到元素处于最后一个位置,或者根本就没有要查找的元素,算法将遍历一整个数组,这种查找效率很低。
二分查找
二分查找,也称折半查找,相比于线性查找,它是一种效率较高的算法,但是二分查找要求数组或切片中的元素必须是有序存储的。