Ce n'est pas la première fois que je l'implémente, mais j'ai pensé écrire un article parce que je pensais que ce serait un peu plus profond que lorsque j'étais débutant. Je pense que ce genre de bulle, le mouvement est très beau. Le principe des belles choses n'est pas intuitif. Je pense que l'opportunité de trier par familiarité est la main de Trump, mais je n'ai jamais utilisé ce type de bulles dans l'alignement élémentaire. (En avez-vous? Lol)
bubble_sort.py
def bubble_sort(A):
flag = 1
i = 0
while flag:
flag = 0
for j in range(len(A)-1,i,-1):
if A[j] < A[j-1]:
A[j],A[j-1] = A[j-1],A[j]
flag = 1
i += 1
return A
L'argument est un tableau arbitraire et le tableau trié est renvoyé.
Variable de boucle i -Le début du tableau trié ・ Il augmente de 1 depuis le début -La condition de fin est lorsque le tri est terminé = lorsqu'il n'y a pas d'échange d'élément (exprimé par indicateur)
Variable de boucle j -Utilisé pour échanger des éléments adjacents dans la partie de tri final ・ Diminuer de 1 de la fin à i + 1
flag ・ Utilisé comme condition de continuation pendant un certain temps ・ S'il y a un échange d'élément, il devient 1 et la boucle suivante continue.
Je pensais que je devrais simplement être une instruction for du début à la fin! Cependant, dans le tri à bulles, lorsqu'une boucle démarre, elle ne s'arrête pas tant que tous les éléments ne sont pas vérifiés, donc des comparaisons inutiles sont faites plusieurs fois. C'est vrai. J'étais heureux quand j'ai compris que je finirais s'il n'y avait pas d'échange utilisant une variable appelée flag. Si vous l'aimez, suivez-moi et ce sera motivant, merci. !!!!!
Recommended Posts