[PYTHON] AOJ Sort 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 Es ist erstaunlich, dass die Werte von a und b vertauscht werden.

        if n[j] < n[j-1]:
            n[j], n[j-1] = n[j-1], n[j]

Der Teil von vergleicht n [j], angegeben durch für j in ~, mit n [j-1], das als nächstes überprüft werden soll. Wenn Sie den kleineren Wert auf n [j-1] setzen, wird der kleinste Wert in der ersten Runde von hinten nach vorne in der Liste angezeigt.

Probenliste der ersten Runde der inneren Schleife.py


#6,Vergleiche 8 6 ist kleiner, also nicht ersetzen.
[2, 5, 3, 1, 7, 9, 10, 4, 6, 8]

#4,Vergleiche 6 4 ist kleiner, also nicht ersetzen.
[2, 5, 3, 1, 7, 9, 10, 4, 6, 8]

#10,Vergleiche 4 Da 4 kleiner ist, wurde es ersetzt.
[2, 5, 3, 1, 7, 9, 4, 10, 6, 8]

#9,Vergleiche 4 Da 4 kleiner ist, wurde es ersetzt.
[2, 5, 3, 1, 7, 4, 9, 10, 6, 8]

#7,Vergleiche 4 Da 4 kleiner ist, wurde es ersetzt.
[2, 5, 3, 1, 4, 7, 9, 10, 6, 8]

#1,Vergleiche 4 1 ist kleiner, ersetzen Sie es also nicht.
#Wechseln Sie von 4 zu 1 und gehen Sie.
[2, 5, 3, 1, 4, 7, 9, 10, 6, 8]

#3,Vergleiche 1. Ersetzt.
[2, 5, 1, 3, 4, 7, 9, 10, 6, 8]

#5,Vergleiche 1. Ersetzt.
[2, 1, 5, 3, 4, 7, 9, 10, 6, 8]

#2,Vergleiche 1. Es wurde ersetzt.
[1, 2, 5, 3, 4, 7, 9, 10, 6, 8]

Wenn eine kleinere Anzahl unterwegs ist, wechseln Sie zu Hoi Hoi und bringen Sie ihn nach vorne. Es ist garantiert, dass der kleinste Wert in der Liste in dieser ersten Runde vorne ersetzt wird (nicht wahr?). In der zweiten Runde erfolgt die Prüfung also einen Schritt zuvor.

Auszug


for i in xrange(len(n)):
#Jedes Mal, wenn Sie herumgehen, ist der Scheck bis zu einem Punkt.
#Weil es vorne einen kleineren Wert hat.
    for j in xrange(len(n)-1, i, -1):

Wenn es vorbei zu sein scheint, habe ich versucht, es in der Mitte zu stoppen


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

Ich habe alle Testfälle von Ichio AOJ bestanden, bin mir aber nicht sicher, ob das gut ist. Der Betrieb ist nicht garantiert.

AOJ Sort I - Selection Sort

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_2_B

Ja.

op.py


#!/usr/bin/python
# -*- coding: UTF-8 -*-
i = input()
n = map(int, raw_input().split())
cnt=0

#Ansicht von vorne in der Liste.
for i in xrange(len(n)):
#Merken Sie sich die Nummer, die Sie suchen
    min=i
#Initialisieren Sie das Flag-Urteil mit 0
    flag=0
#Zweiter und nachfolgender in der Liste(Ich gehe nach rechts, um herumzugehen)Von bis zum letzten
    for j in xrange(i,len(n)):
        if n[j]<n[min]:
#Merken Sie sich die Reihenfolge kleinerer Werte.
#Wenn dies der Fall ist, bedeutet dies, dass ein Ersatzverarbeitungskandidat vorhanden war. Setzen Sie daher ein Flag.
            min=j
            flag=1
#Tauschen Sie den für den ersten Vergleich verwendeten Wert gegen den kleinsten gefundenen Wert aus.
    n[i],n[min]=n[min],n[i]
    cnt+=flag
print ' '.join(map(str,n))
print cnt

Hmmm, False, True haben auch Werte von 0 und 1? Nutzen Sie das aus?

Recommended Posts

AOJ Sort I-
Fügen Sie eine Art von AOJ-Übungen ein
Sortieren
[AOJ] Absteigende Sortierung in verschiedenen Sprachen
Sortierung einfügen
SelectionSort
[Python] Sortieren
Natürliche Sorte
Schriftliche Auswahlsortierung in C.
Python #sort
Blasensorte
Blasensorte
Ich habe versucht, die Blasensortierung nach Sprache zu programmieren
Ich habe versucht, eine selektive Sortierung in Python zu implementieren