クイック スタート: Go 言語関数を使用した二分探索アルゴリズムの実装
二分探索アルゴリズム (Binary Search) は効率的な検索アルゴリズムであり、その時間計算量は O(log n) です。順序付けされた配列を扱う場合、二分探索によりターゲット要素の位置を迅速に見つけることができます。この記事では、Go 言語関数を使用して二分探索アルゴリズムを実装し、コード例を示します。
二分探索アルゴリズムの基本的な考え方は、ターゲット値が見つかるか検索範囲が空になるまで、ターゲット値と配列の中間要素の大小関係を比較して検索範囲を狭めることです。 。
以下は、バイナリ検索アルゴリズムを実装するための Go 言語関数のコード例です。
package main import "fmt" // 二分查找函数 func binarySearch(arr []int, target int) int { start := 0 end := len(arr) - 1 for start <= end { mid := (start + end) / 2 // 目标值在数组右侧 if arr[mid] < target { start = mid + 1 } // 目标值在数组左侧 else if arr[mid] > target { end = mid - 1 } // 找到目标值 else { return mid } } // 没有找到目标值 return -1 } func main() { arr := []int{1, 3, 5, 7, 9, 11, 13, 15} target := 9 index := binarySearch(arr, target) if index != -1 { fmt.Println("目标值", target, "在数组中的索引为", index) } else { fmt.Println("目标值", target, "不在数组中") } }
上記のコードは、まず、順序付けされた検索アルゴリズムを受け入れるbinarySearch
関数を定義します。整数配列arr
とターゲット値target
をパラメータとして指定します。この関数は、2 つの変数start
とend
を使用して、検索範囲の開始位置と終了位置を表します。
次に、ループ内で中間位置mid
を計算し、中間要素と要素間のサイズ関係に基づいてstart
とend# を更新します。対象値 ## の値は検索範囲を絞り込みます。中央の要素がターゲット値と等しい場合、ターゲット値が検索され、そのインデックスが返されます。検索範囲が空の場合は、目的の値が見つからないことを意味し、-1 が返されます。
mainでは、順序付き整数配列
arrとターゲット値
targetが定義されています。
binarySearch関数を呼び出してバイナリ検索を実行し、返されたインデックスの値に基づいて対応する出力を実行します。
以上がクイック スタート: Go 言語関数を使用して二分探索アルゴリズムを実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。