ホームページ > バックエンド開発 > Golang > クイック スタート: Go 言語関数を使用して二分探索アルゴリズムを実装する

クイック スタート: Go 言語関数を使用して二分探索アルゴリズムを実装する

王林
リリース: 2023-07-30 10:51:24
オリジナル
1707 人が閲覧しました

クイック スタート: 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 つの変数 startend を使用して、検索範囲の開始位置と終了位置を表します。

次に、ループ内で中間位置 mid を計算し、中間要素と要素間のサイズ関係に基づいて startend# を更新します。対象値 ## の値は検索範囲を絞り込みます。中央の要素がターゲット値と等しい場合、ターゲット値が検索され、そのインデックスが返されます。検索範囲が空の場合は、目的の値が見つからないことを意味し、-1 が返されます。

関数

main では、順序付き整数配列 arr とターゲット値 target が定義されています。 binarySearch 関数を呼び出してバイナリ検索を実行し、返されたインデックスの値に基づいて対応する出力を実行します。

上記のコード例を通じて、Go 言語関数を使用して二分探索アルゴリズムを実装する方法をすぐに学ぶことができます。このアルゴリズムは、大規模な順序付けされたデータを処理する場合に非常に効率的であり、検索時間を大幅に短縮できます。実際のアプリケーションでは、特定のシナリオに応じて二分探索アルゴリズムを柔軟に使用して、コードの実行効率を向上させることができます。

以上がクイック スタート: Go 言語関数を使用して二分探索アルゴリズムを実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート