Maison > développement back-end > Golang > Démarrage rapide : utilisation des fonctions du langage Go pour implémenter un algorithme de recherche binaire

Démarrage rapide : utilisation des fonctions du langage Go pour implémenter un algorithme de recherche binaire

王林
Libérer: 2023-07-30 10:51:24
original
1726 Les gens l'ont consulté

Démarrage rapide : utilisez les fonctions du langage Go pour implémenter l'algorithme de recherche binaire

L'algorithme de recherche binaire (Binary Search) est un algorithme de recherche efficace et sa complexité temporelle est O(log n). Lorsqu'il s'agit de tableaux ordonnés, la recherche binaire peut localiser rapidement l'emplacement de l'élément cible. Cet article utilisera les fonctions du langage Go pour implémenter l'algorithme de recherche binaire et fournira des exemples de code.

L'idée de base de l'algorithme de recherche binaire est de restreindre la plage de recherche en comparant la relation de taille entre la valeur cible et l'élément central du tableau jusqu'à ce que la valeur cible soit trouvée ou que la plage de recherche soit vide.

Ce qui suit est un exemple de code de la fonction du langage Go implémentant l'algorithme de recherche binaire :

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, "不在数组中")
    }
}
Copier après la connexion

Le code ci-dessus définit d'abord une fonction binarySearch, qui accepte un tableau d'entiers ordonnés arr code > et une valeur cible <code>target comme paramètres. La fonction utilise deux variables start et end pour représenter les positions de début et de fin de la plage de recherche. binarySearch函数,该函数接受一个有序整型数组arr和一个目标值target作为参数。函数使用两个变量startend来表示查找范围的起始和结束位置。

然后,在一个循环中,计算中间位置mid,并根据中间元素和目标值之间的大小关系更新startend的值,缩小查找范围。如果中间元素等于目标值,说明找到了目标值,返回其索引。如果查找范围为空,表示未找到目标值,返回-1。

main函数中,定义了一个有序整型数组arr,以及目标值target。调用binarySearch

Ensuite, dans une boucle, calculez la position médiane mid et mettez à jour start et end en fonction de la relation de taille entre l'élément du milieu et la valeur cible > valeur pour restreindre la portée de la recherche. Si l'élément du milieu est égal à la valeur cible, la valeur cible est trouvée et son index est renvoyé. Si la plage de recherche est vide, cela signifie que la valeur cible n'est pas trouvée et -1 est renvoyé.

Dans la fonction main, un tableau d'entiers ordonnés arr et la valeur cible target sont définis. Appelez la fonction binarySearch pour effectuer une recherche binaire et effectuez la sortie correspondante en fonction de la valeur de l'index renvoyé. 🎜🎜Grâce aux exemples de code ci-dessus, nous pouvons rapidement apprendre à utiliser les fonctions du langage Go pour implémenter l'algorithme de recherche binaire. Cet algorithme est très efficace lors du traitement de données ordonnées à grande échelle et peut réduire considérablement le temps de recherche. Dans les applications pratiques, nous pouvons utiliser de manière flexible l'algorithme de recherche binaire selon des scénarios spécifiques pour améliorer l'efficacité de l'exécution du code. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal