使用线性搜索在Golang程序中找到特定元素在数组中的第一次出现
在这篇Golang文章中,我们将使用递归和迭代方法使用线性搜索在数组中找到特定元素的第一次出现。
线性搜索是一种简单的搜索算法,它逐一检查列表或数组中的每个元素,从开始到结束,直到找到目标值或整个列表被搜索。它也被称为顺序搜索。
语法
func firstOcc(arr []int, target int) int {…}
这个firstOcc()函数用来使用线性搜索迭代地查找特定元素在数组中的第一次出现。它需要一个整数数组、目标元素作为它的参数。
func firstOcc(arr []int, target int, index int) int {…}
这个firstOcc()函数用来使用线性搜索递归地查找特定元素在数组中的第一次出现。它需要一个整数数组、目标元素和数组的当前索引作为它的参数。
算法
- 步骤1 − 首先,我们需要导入fmt包。
-
步骤2 − 现在,创建一个firstOcc()函数,它使用线性搜索在数组中查找特定元素的第一次出现。
-
步骤3 − 它需要一个数组和一个目标元素作为输入,并返回目标元素在数组中的第一次出现的索引。
-
步骤4 − 如果在数组中找不到目标元素,函数将返回-1。
-
步骤5 − 它使用一个简单的线性搜索算法从开始遍历数组,并将每个元素与目标元素进行比较。如果找到了,它将返回该元素的索引。
-
步骤6 − 开始main()函数。在main()函数内部,创建一个带有一些元素的数组。
-
步骤7 − 定义目标元素。
-
步骤8 − 现在,调用firstOcc()函数,并将数组和目标元素作为参数传递给函数。
-
步骤9 − 此外,使用fmt.Printf()函数在屏幕上打印带有目标元素第一次出现的索引的结果消息。
示例1
在此示例中,我们将使用迭代方法定义一个firstOcc()函数,该函数用于使用线性搜索查找特定元素在数组中的第一次出现。
package main
import "fmt"
func firstOcc(arr []int, target int) int {
for i, v := range arr {
if v == target {
return i
}
}
return -1
}
func main() {
arr := []int{4, 8, 3, 2, 7, 4, 5, 9, 10}
target := 9
index := firstOcc(arr, target)
if index == -1 {
fmt.Printf("在数组中找不到元素%d的第一次出现\n", target)
} else {
fmt.Printf("元素%d在数组中第一次出现的索引为%d\n", target, index)
}
}
输出
元素9在数组中第一次出现的索引为7
示例2
在此示例中,我们将使用递归方法定义一个firstOcc()函数,该函数用于使用线性搜索查找特定元素在数组中的第一次出现。
package main
import "fmt"
func firstOcc(arr []int, target int, index int) int {
if index >= len(arr) {
return -1
}
if arr[index] == target {
return index
}
return firstOcc(arr, target, index+1)
}
func main() {
arr := []int{49, 23, 33, 14, 56, 46, 17, 28, 69, 10}
target := 56
index := firstOcc(arr, target, 0)
if index == -1 {
fmt.Printf("数组中未发现元素 %d 的第一次出现\n", target)
} else {
fmt.Printf("数组中元素 %d 第一次出现的索引为 %d\n", target, index)
}
}
输出
数组中元素 56 第一次出现的索引为 4
结论
我们成功编译并执行了一个Go语言程序,使用线性搜索通过递归和迭代方法在数组中查找特定元素的第一次出现。 第一个示例中,我们使用了迭代方法;在第二个示例中,我们使用了使用递归方法。