[PYTHON] AOJ Trier I-

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

AOJ Trier I-
Insérer une sorte d'exercices AOJ
Trier
[AOJ] Tri décroissant dans différentes langues
Insérer un tri
SélectionSort
[Python] Trier
Tri naturel
Tri sélect écrit en C
Python #sort
Tri à bulles
Tri à bulles
J'ai essayé de programmer la bulle de tri par langue
J'ai essayé d'implémenter le tri sélectif en python