編寫一個 Golang 程式來搜尋排序陣列中元素
解決此問題的思路
- 步驟 1: 從第 0 個索引到 n - 1 遍歷陣列,其中 n 是給定陣列的大小。
- 步驟 2: 宣告 low = 第 0 個索引 且 high = n - 1。啟動一個 for 迴圈,直到 low 小於 high。
- 步驟 3: 查詢 mid = (low + high) / 2,如果中間的元素等於 key,則返回 mid 索引。
- 步驟 4: 如果 mid 處的元素大於 key,則令 high = mid。
- 步驟 5: 如果 mid 處的元素小於 key,則令 low = mid + 1。
- 步驟 6: 如果給定陣列中不存在 key,則返回 -1。
時間複雜度: log2(n)
程式
package main
import "fmt"
func binarySearch(arr []int, key int) int{
high := len(arr) - 1
low := 0
var mid int
for low <= high {
mid = (high+low)/2
if arr[mid] == key {
return mid
} else if arr[mid] > key {
high = mid
} else {
low = mid + 1
}
}
return -1
}
func main(){
fmt.Println(binarySearch([]int{1, 4, 6, 8, 9, 10}, 11))
fmt.Println(binarySearch([]int{1, 4, 6, 8, 9, 10}, 8))
fmt.Println(binarySearch([]int{1, 4, 6, 8, 9, 10}, 10))
}輸出
-1 3 5
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP