跳转搜索是一种用于有序数组的搜索算法.其基本思想是通过固定步骤向前跳转或跳
过某些元素来检查更少的元素.
跳转搜索的步骤是将数组长度的平方根跳跃进行查找.直到找到大于或等于目标的值.
然后实现一个反向搜索来确定最终结果.
1.使用场景:
大型数据集:跳转搜索算法对于大型数据集是有效的.因为其他算法的开销性能影响很大.
近似匹配:跳转搜索算法在搜索近似匹配时很有用.会在数据集中找到最接近目标值的元素.
2.实现:
2.1方法:
package data
import "math"
func JumpSearch(array []int, key int) int {
var blockSize = int(math.Sqrt(float64(len(array))))
var i = 0
for {
if array[i] >= key {
break
}
if i > len(array) {
break
}
i += blockSize
}
for j := i; j > 0; j-- {
if array[j] == key {
return j
}
}
return -1
}
2.2main方法:
func main() {
array := []int{1, 2, 6, 5, 88, 66, 77, 69, 76, 99}
search := data.JumpSearch(array, 0)
fmt.Println("search:", search)
}
3.实战:
如何使用Go语言实现跳转搜索.
3.1方法:
package data
import "math"
func JumpSearch(array []int, key int) int {
var blockSize = int(math.Sqrt(float64(len(array))))
var i = 0
for {
if array[i] >= key {
break
}
if i > len(array) {
break
}
i += blockSize
}
for j := i; j > 0; j-- {
if array[j] == key {
return j
}
}
return -1
}
3.2main方法:
func main() {
array := []int{1, 2, 6, 5, 88, 66, 77, 69, 76, 99}
search := data.JumpSearch(array, 0)
fmt.Println("search:", search)
}
```
***不见当年金岳霖.***
***
***
***
***
***如果大家喜欢我的分享的话,可以关注我的微信公众号***
***念何架构之路***