[RUBY] Méthode de recherche arbitraire dans un tableau utilisant la recherche binaire

【Aperçu】

1. Conclusion </ b>

2. Qu'est-ce qu'une recherche binaire? </ B>

3. Comment coder </ b>

4. Ce que j'ai appris d'ici (utilisé en cas d'erreur) </ b>

  1. Conclusion

Utilisez la méthode length en combinaison avec l'instruction while et l'instruction if </ b>!
2. Qu'est-ce que la recherche binaire?

Il s'agit d'une méthode de recherche de données dans un tableau (en supposant que la même valeur n'est pas incluse). Le contenu est une méthode de recherche qui vérifie la valeur au centre, compare la relation de magnitude entre la gauche et la droite et recherche dans l'ordre!
3. Comment coder

def binary_search(array, number_factors, value)
  min_factor = 0
  max_factor = number_factors - 1 #---❷
  while min_factor <= max_factor do #---❸
    center_factor = (min_factor + max_factor) / 2 #---❹
    if array[center_factor] == value
      return center_factor
    elsif array[center_factor] < value
      min_factor = center_factor + 1
    else
      max_factor = center_factor - 1 #---❺
    end
  end
  return -1 #---❻
end

array=[1,3,5,6,9,10,13,20,26,31]

puts "Quel numéro recherchez-vous?"
value = gets.to_i
number_factors = array.length #---❶

result = binary_search(array, number_factors, value)

if result == -1 #---❼
  puts "#{value}N'est pas actuellement enregistré."
else
  puts "#{value}Est#{result}C'est la seconde."
end

❶: Commencez par compter les éléments du tableau dans le tableau. La recherche binaire commence par diviser l'élément en deux.
❷: Le numéro de l'élément le plus à gauche et le numéro de l'élément le plus à droite sont décidés. Puisque "0" est appliqué au tout début du tableau, l'extrémité gauche est 0 et l'extrémité droite est le nombre d'éléments incluant 0, donc "-1" est utilisé. (Il y a 10 éléments jusqu'à ex: 1 ... 31, mais l'élément commence par "0" à l'extrémité gauche, il devient donc "9" à l'extrémité droite)
❸: Ici, le nombre d'éléments de gauche et le nombre d'éléments de droite sont comparés. C'est parce que le nombre à l'extrême gauche ne dépasse pas le nombre à l'extrême droite.
❹: ❹ à ❻ sont les parties principales de la recherche binaire. J'ai trouvé l'élément central avec center_factor. Si les éléments du tableau sont impairs, ils seront arrondis automatiquement.
❺: divisez-le en deux et décidez si vous souhaitez effectuer une recherche à partir de la gauche ou de la droite. Si le centre est le numéro que vous recherchez, renvoyez-le avec retour. Ce sera affiché dans ❼. Si le nombre dans l'élément central n'est pas le nombre entré, il est décidé s'il faut attaquer de l'extrémité gauche ou de l'extrémité droite en fonction de la taille. Si la valeur saisie est plus grande, recherchez à partir de l'extrémité gauche (car ce tableau est plus grand de gauche à droite), si la valeur saisie est plus petite, recherchez à partir de l'extrémité droite (ce tableau est plus petit de droite à gauche) (Parce qu'il y a). Ensuite, ❹-❺ est répété par l'instruction while.
❻: Désigne le cas où le numéro recherché n'est pas trouvé. Il est courant de juger par intermittence avec "0" ou "1", mais comme "0" est utilisé dans l'élément du tableau de décharge, il est exprimé d'une manière facile à comprendre avec "-1". ❼: Enfin, les résultats recherchés sont affichés.


4. Ce que j'ai appris d'ici (utilisé en cas d'erreur)

N'est-il pas nécessaire d'ajouter ".round" dans la partie de? Il semble qu'il soit automatiquement arrondi lorsque je le recherche. Lors de l'arrondi à l'endroit spécifié, il est pratique de coder avec ".round (2) <Puisque jusqu'à la 2ème place de la fraction est affichée, elle sera arrondie à la 3ème place de la fraction>" etc.!

Recommended Posts