📅  最后修改于: 2023-12-03 14:51:16.117000             🧑  作者: Mango
在Golang中,我们可以通过遍历数组的方式查找指定数字的整数值。下面是一些常用的方法。
我们可以使用 for 循环遍历数组,使用 if 语句判断每个元素是否等于指定数字,如果找到则返回该元素的下标。
func findIndex(arr []int, num int) int {
for i, n := range arr {
if n == num {
return i
}
}
return -1
}
在上面的代码中,我们定义了一个 findIndex 函数,接收一个数组和一个数字作为参数,返回数字在数组中的下标,如果找不到则返回 -1。我们使用 range 遍历数组元素,如果找到了指定数字则返回其下标,如果未找到则返回 -1。
如果数组已经排序,则我们可以使用二分查找的方式更高效地找到指定数字的整数值。
func binarySearch(arr []int, num int) int {
left, right := 0, len(arr)-1
for left <= right {
mid := left + (right-left)/2
if arr[mid] == num {
return mid
} else if arr[mid] < num {
left = mid + 1
} else {
right = mid - 1
}
}
return -1
}
在上面的代码中,我们定义了一个 binarySearch 函数,接收一个已排序的数组和一个数字作为参数,返回数字在数组中的下标,如果找不到则返回 -1。我们使用 left 和 right 两个指针分别指向数组的第一个和最后一个元素,然后在循环中计算中间位置的下标 mid,并使用 if 语句判断 mid 对应的元素与指定数字的大小关系,如果 mid 对应的元素等于指定数字则返回 mid,如果 mid 对应的元素小于指定数字则将 left 指针移到 mid+1 位置,如果 mid 对应的元素大于指定数字则将 right 指针移到 mid-1 位置。
在本文中,我们介绍了两种在 Golang 中查找指定数字的整数值的方法,第一种方法是遍历数组,第二种方法是使用二分查找。对于未排序的数组,第一种方法的时间复杂度为 O(n),对于已排序的数组,第二种方法的时间复杂度为 O(logn)。因此,使用二分查找能更高效地查找指定数字的整数值。