http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_2_A
Bubble Sort
op.py
#!/usr/bin/python
i = input()
n = map(int, raw_input().split())
cnt=0
for i in xrange(len(n)):
for j in xrange(len(n)-1, i, -1):
if n[j] < n[j-1]:
n[j], n[j-1] = n[j-1], n[j]
cnt+=1
print ' '.join(map(str,n))
print cnt
a,b =b,a
C'est incroyable que les valeurs de a et b soient permutées.
if n[j] < n[j-1]:
n[j], n[j-1] = n[j-1], n[j]
La partie de est de comparer n [j] spécifié par for j dans ~ avec n [j-1] à vérifier ensuite. En définissant le plus petit sur n [j-1], la plus petite valeur du premier tour émerge de l'arrière vers l'avant de la liste.
Liste d'échantillons du premier tour de la boucle intérieure.py
#6,Comparer 8 6 est plus petit, alors ne le remplacez pas.
[2, 5, 3, 1, 7, 9, 10, 4, 6, 8]
#4,Comparer 6 4 est plus petit, alors ne le remplacez pas.
[2, 5, 3, 1, 7, 9, 10, 4, 6, 8]
#10,Comparer 4 Puisque 4 est plus petit, il a été remplacé.
[2, 5, 3, 1, 7, 9, 4, 10, 6, 8]
#9,Comparer 4 Puisque 4 est plus petit, il a été remplacé.
[2, 5, 3, 1, 7, 4, 9, 10, 6, 8]
#7,Comparer 4 Puisque 4 est plus petit, il a été remplacé.
[2, 5, 3, 1, 4, 7, 9, 10, 6, 8]
#1,Comparer 4 1 est plus petit, alors ne le remplacez pas.
#Passez de 4 à 1 et partez.
[2, 5, 3, 1, 4, 7, 9, 10, 6, 8]
#3,Comparez 1. Remplacé.
[2, 5, 1, 3, 4, 7, 9, 10, 6, 8]
#5,Comparez 1. Remplacé.
[2, 1, 5, 3, 4, 7, 9, 10, 6, 8]
#2,Comparez 1. Il a été remplacé.
[1, 2, 5, 3, 4, 7, 9, 10, 6, 8]
S'il y a un plus petit nombre sur le chemin, changez pour Hoi Hoi et emmenez-le devant. Il est garanti que la plus petite valeur de la liste sera remplacée à l'avant dans ce premier tour (n'est-ce pas?). Donc au deuxième tour, le contrôle sera une étape avant.
Extrait
for i in xrange(len(n)):
#Chaque fois que vous faites le tour, le contrôle est jusqu'à un point.
#Parce qu'il a une valeur inférieure à l'avant.
for j in xrange(len(n)-1, i, -1):
Si ça semble fini, j'ai essayé de l'arrêter au milieu
for m in range(len(n)):
for j in range(len(n)-1, m, -1):
if n[j]<n[j-1]:
n[j],n[j-1]=n[j-1],n[j]
ans+=1
# print ans
if ans==chk: break
chk=ans
print ' '.join(map(str,n))
print ans
J'ai réussi tous les cas de test d'Ichio AOJ, mais je ne sais pas si c'est bon. Le fonctionnement n'est pas garanti.
AOJ Sort I - Selection Sort
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_2_B
Oui.
op.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
i = input()
n = map(int, raw_input().split())
cnt=0
#Vue de l'avant de la liste.
for i in xrange(len(n)):
#Souvenez-vous du numéro que vous regardez
min=i
#Initialiser le jugement du drapeau avec 0
flag=0
#Deuxième et suivants dans la liste(Je vais à droite pour faire le tour)Du au dernier
for j in xrange(i,len(n)):
if n[j]<n[min]:
#Mémorisez l'ordre des valeurs plus petites.
#Si c'est le cas, cela signifie qu'il y avait un candidat de traitement de remplacement, alors définissez un indicateur.
min=j
flag=1
#Échangez la valeur prise pour la comparaison initiale avec la plus petite valeur trouvée.
n[i],n[min]=n[min],n[i]
cnt+=flag
print ' '.join(map(str,n))
print cnt
Hmmm, False, True ont également des valeurs de 0 et 1? En profitez-vous?
Recommended Posts