Puisque la dichotomie a été écrite dans la classe d'algorithme, elle a été implémentée en Python3. Puisque le tableau inférieur est détruit (les éléments sont effacés), il est préférable de copier les données et de les exécuter lors de leur utilisation réelle, ou de modifier les conditions en utilisant des variables telles que gauche et droite. alors. J'ai pensé qu'il serait plus pratique d'en faire une fonction, mais Python peut être recherché en utilisant in, et je l'ai juste codé dans la pratique de l'algorithme, donc c'est bien fait, oui.
Préparez une liste appropriée et triez-la par ordre croissant. Enregistrez le numéro que vous souhaitez trouver dans sa_num. Utilisez cnt pour compter le nombre de fois que vous avez traité pendant la recherche. end est utilisé comme condition de fin et suc est utilisé comme indicateur de réussite. Répéter si end est 0 Si l'élément est 1, il est terminé si seul cet élément est examiné, alors marquez-le comme end = 1. Sinon, obtenez la médiane. Si la valeur médiane et la valeur que vous souhaitez rechercher ne correspondent pas, l'amplitude de la valeur médiane et la valeur que vous souhaitez rechercher est comparée. Si la valeur médiane est plus grande, la valeur que vous voulez trouver va de 0 à index, vous n'avez donc pas besoin du côté droit du tableau (de l'index à la fin), supprimez-le en utilisant une tranche. Au contraire, si elle est inférieure à la valeur médiane, le côté gauche est supprimé. Si le nombre d'éléments du tableau devient 1, retirez les éléments et comparez-les à la valeur numérique que vous souhaitez rechercher. Si vous ne trouvez pas le numéro que vous recherchez, vous avez terminé.
lis = [15,23,25,601,65,87,9,103,15,30,11,13]
lis.sort()
sa_num = 25
cnt = 0
end = 0
suc = 0
while end == 0:
cnt += 1
print(lis)
if len(lis) != 1:
index = int(len(lis) / 2)
if lis[index] == sa_num:
print('suc' + str(sa_num))
end = 1
elif lis[index] > sa_num:
del lis[index:]
elif lis[index] < sa_num:
del lis[0:index]
else:
if lis[0] == sa_num:
print(sa_num)
end = 1
else:
print('Impossible de localiser.')
suc = 1
end = 1
if suc != 1:
print(str(cnt) + 'Trouvé dans la deuxième recherche.')
else:
print(str(cnt) + 'J'ai cherché plusieurs fois mais je ne l'ai pas trouvé.')
Recommended Posts