使用線性搜尋查詢陣列中特定元素的首次出現位置的Go語言程式
在這篇Go語言文章中,我們將使用遞迴和迭代方法,查詢使用線性搜尋在陣列中特定元素的首次出現位置。
線性搜尋是一種簡單的搜尋演算法,它從列表或陣列的開頭開始,逐個檢查每個元素,直到找到目標值或搜尋完整個列表。它也稱為順序搜尋。
語法
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("First Occurrence of element %d not found in array\n", target)
} else {
fmt.Printf("First Occurrence of element %d found at index %d\n", target, index)
}
}
輸出
First Occurrence of element 9 found at index 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("First Occurrence of element %d not found in array\n", target)
} else {
fmt.Printf("First Occurrence of element %d found at index %d\n", target, index)
}
}
輸出
First Occurrence of element 56 found at index 4
結論
我們已經成功編譯並執行了一個Go語言程式,該程式使用遞迴和迭代方法,透過兩個示例查詢使用線性搜尋在陣列中特定元素的首次出現位置。在第一個示例中,我們使用了迭代方法;在第二個示例中,我們使用了遞迴方法。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP