Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie2-

introduction

Bonjour. C'est moelleux et moelleux. Nous résoudrons l'introduction aux algorithmes et aux structures de données d'AOJ. Il est facile de garder une trace de ce que vous avez appris.

Cela fait moins d'un an et demi que j'ai commencé à toucher la programmation moi-même AtCoder est vert, donc je ne suis pas un homme fort. Travaillons dur ensemble.

Kyapee

table des matières

Cette fois, c'est PART2: Tri élémentaire. Je veux faire de mon mieux et le faire jusqu'au bout.

ALDS1_2_A: Tri à bulles ALDS1_2_B: tri sélectif ALDS1_2_C: tri stable ALDS1_2_D: tri Shell

ALDS1_2_A: Tri à bulles

Tri à bulles

def bubbleSort(A, N):
    bit = True
    i = 0
    count = 0
    while bit:
        bit = False
        for j in range(n-1,i,-1):
            if A[j] < A[j-1]:
                A[j],A[j-1] = A[j-1],A[j]
                count += 1
                bit = True
    
    return A , count
        

n = int(input())
A = list(map(int,input().split()))

A,count = bubbleSort(A,n)
print(*A)
print(count)

ALDS1_2_B: tri sélectif

 def SelectionSort(A,n):
    count = 0
    for i in range(n):
        minv = i
        for j in range(i,n):
            if A[j] < A[minv]:
                minv = j
        
        A[i],A[minv] = A[minv],A[i]
        if i!=minv:
            count += 1

    return A,count

n = int(input())
A = list(map(int,input().split()))

A1,count1 = SelectionSort(A,n)

print(*A1)
print(count1)

ALDS1_2_C: tri stable

Enregistrer en tant que tuple pour ne pas modifier la liste d'origine Le jugement de stabilité est une réflexion exploratoire

def bubbleSort(A, N):
    A = list(A)
    bit = True
    i = 0
    while bit:
        bit = False
        for j in range(n-1,i,-1):
            if int(A[j][1]) < int(A[j-1][1]):
                A[j],A[j-1] = A[j-1],A[j]
                bit = True
    
    return A 

def SelectionSort(A,n):
    A = list(A)
    for i in range(n):
        minv = i
        for j in range(i,n):
            if int(A[j][1]) < int(A[minv][1]):
                minv = j
        
        A[i],A[minv] = A[minv],A[i]

    return A

def is_stable(A_in, A_out):
    n = len(A_in)
    for i in range(n):
        for j in range(i+1,n):
            for a in range(n):
                for b in range(a+1,n):
                    if A_in[i][1] == A_in[j][1] and A_in[i]==A_out[b] and A_in[j]==A_out[a]:
                        return "Not stable"
    return "Stable"

n = int(input())
A = list(input().split())
A_ans = tuple(A)

A1 = bubbleSort(A_ans,n)
print(*A1)
print(is_stable(A_ans, A1))

A2 = SelectionSort(A_ans,n)
print(*A2)
print(is_stable(A_ans, A2))

ALDS1_2_D: tri Shell

C'est difficile ...



def insertionSort(A,n,g):
    global count
    for i in range(g, n):
        v = A[i]
        j = i - g
        while j >= 0 and A[j]>v:
            A[j+g] = A[j]
            j -= g
            count += 1
        A[j+g] = v



def ShellSort(A, n):
    global count
    count = 0
    g = 1
    G = [g]
    while 3 * g + 1 < n:
        g = 3 * g + 1
        G.append(g)
    m = len(G)
    G = G[::-1]
    
    print(m)
    print(*G)

    for j in G:
        insertionSort(A,n,j)



n = int(input())
A = []
for i in range(n):
    a = int(input())
    A.append(a)

ShellSort(A, n)
print(count)

for i in A:
    print(i)

en conclusion

Si vous avez une mauvaise réponse, veuillez contacter Goto

p.s.p Qitta je n'ai jamais reçu de gentil garçon Nous attendons avec impatience les premiers parents mémorables. ↑ Je l'ai écrit la dernière fois, mais je le loue

Recommended Posts

Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie1-
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie2-
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie4-
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie3-
[Introduction à cx_Oracle] (Partie 6) Mappage des types de données DB et Python
[Introduction à cx_Oracle] (Partie 9) Mappage des types de données DB et Python (version 8 ou ultérieure)
[Introduction à l'application Udemy Python3 +] 36. Utilisation de In et Not
[Introduction to Data Scientists] Bases de Python ♬ Fonctions et classes
Introduction à la vérification des effets Rédaction des chapitres 4 et 5 en Python
Introduction à Python scikit-learn, matplotlib, algorithme monocouche (~ vers B3 ~ part3)
[Introduction à Python] Combinaison des données Nikkei Average et NY Dow CSV
[Introduction à Python3 Jour 1] Programmation et Python
Algorithme de tri et implémentation en Python
Introduction à Python Hands On Partie 1
Hashing de données en R et Python
Notes de lecture (en Python et Stan) pour une introduction à la modélisation statistique pour l'analyse de données (Midorimoto)
traitement pour utiliser les données notMNIST en Python (et essayé de les classer)
[Introduction to Data Scientists] Bases de Python ♬ Branchements conditionnels et boucles
[Introduction aux Data Scientists] Bases de Python ♬ Fonctions et fonctions anonymes, etc.
[Introduction à Python] Comment utiliser la classe en Python?
Modulation et démodulation AM avec Python Partie 2
Livre Ali en python: Sec.2-4, structure de données
Web-WF Python Tornado Partie 3 (Introduction à Openpyexcel)
[Introduction à Python3 Jour 19] Chapitre 8 Destinations de données (8.4-8.5)
[Introduction à Python3 Day 18] Chapitre 8 Destinations de données (8.3.6.2 à 8.3.6.3)
Représentez facilement des données graphiques dans le shell et Python
Compressez les données python et écrivez sur sqlite
Comment utiliser is et == en Python
"Introduction à l'analyse de données par modélisation statistique bayésienne à partir de R et Stan" implémenté en Python
Introduction aux vecteurs: Algèbre linéaire en Python <1>
Introduction à la vérification de l'efficacité Chapitre 1 écrit en Python
[Introduction au Data Scientist] Bases de Python ♬
[Python] [Supplément] Chapitre 04-09 Structures de données diverses (théorie des ensembles et arithmétique dans les ensembles)
Analyse des données: application facile des statistiques descriptives et des statistiques d'estimation aux données CSV en Python
Qu'est-ce qu'un algorithme? Introduction à l'algorithme de recherche] ~ Python ~
Comment générer une séquence en Python et C ++
[Introduction à Python3 Jour 12] Chapitre 6 Objets et classes (6.3-6.15)
Introduction à la vérification de l'efficacité Chapitre 3 écrit en Python
Recevoir et afficher les données de formulaire HTML en Python
tse --Introduction à l'éditeur de flux de texte en Python
[Python] Permutation des lignes et des colonnes de données Numpy
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
J'ai écrit "Introduction à la vérification des effets" en Python
[Introduction à Python3, jour 22] Chapitre 11 Traitement parallèle et mise en réseau (11.1 à 11.3)
Envoyer un message à Skype et Chatwork en Python
[Introduction à Python] Comment gérer les données au format JSON
[Introduction à l'application Udemy Python3 +] 64. Espace de noms et portée
[Introduction à Python3 Jour 11] Chapitre 6 Objets et classes (6.1-6.2)
[Introduction à l'algorithme] Trouvez l'itinéraire le plus court [Python3]
Introduction à la vérification de l'efficacité Chapitre 2 écrit en Python
Pour représenter la date, l'heure, l'heure et les secondes en Python
Comment tracer l'autocorrélation et l'autocorrélation partielle avec Python
[Python] Comment nommer les données de table et les sortir avec csv (méthode to_csv)
Introduction à l'analyse des séries temporelles ~ Modèle d'ajustement saisonnier ~ Implémenté en R et Python
[Introduction à l'application Udemy Python3 +] 35. Opérateurs de comparaison et opérateurs logiques
Convertir la date et l'heure zonées en temps Unixtime dans Python2.7
Résumé des outils nécessaires pour analyser les données en Python
Traitement pleine largeur et demi-largeur des données CSV en Python
[Introduction au renforcement de l'apprentissage] part.1-Algorithme Epsilon-Greedy dans Bandit Game
[Introduction à la décomposition des éléments] Organisons les méthodes d'analyse des séries chronologiques en R et python ♬
Différences de comportement entre les opérateurs append () et "+ =" lors de l'ajout de données à une liste en Python