クイック スタート: Go 言語関数を使用して二分探索アルゴリズムを実装する
クイック スタート: 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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

GoLandを使用する場合のGolandのカスタム構造タグの問題に関して、Go Language Developmentに使用する場合、いくつかの構成の問題に遭遇することがよくあります。それらの1つは...

大企業または有名なオープンソースプロジェクトによって開発されたGOのどのライブラリが開発されていますか? GOでプログラミングするとき、開発者はしばしばいくつかの一般的なニーズに遭遇します...

Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...

GO言語のパフォーマンス最適化戦略大規模なURLアクセスこの記事では、GO言語を使用して大規模なURLアクセスを処理する問題に関するパフォーマンス最適化ソリューションを提案します。 CSVからの既存のプログラム...

バイトによって引き起こされるメモリリークの分析。GO言語開発のGO言語のメイクススライス、バイテスが使用されている場合、処理が適切に行われない場合は、文字列をスプライスするためにバッファーが使用されます...

ポインター構文とviperライブラリの使用における問題への取り組みGO言語でプログラミングするとき、特にポインターの構文と使用を理解することが重要です...
