Un mémo que j'ai écrit un tri rapide en Python

J'ai écrit une note pour moi-même sur le tri rapide.

Qu'est-ce que le tri rapide

code

quick_sort.py


def partition(A, p, r):
    x = A[r-1]
    i = p-1
    for j in range(p, r-1):
        if A[j] <= x:
            i += 1
            A[i], A[j] = A[j], A[i]
    A[i+1], A[r-1] = A[r-1], A[i+1]
    
    return i+1
    
n = int(input())
A = list(map(int, input().split()))


def quick_sort(A, p, r):
    if p < r:
        q = partition(A, p, r)
        quick_sort(A, p, q)
        quick_sort(A, q+1, r)
    return A
        
print(quick_sort([3, 1, 10, 2.5, 11, 3, 21,4, -1], 0, 9))
# [-1, 1, 2.5, 3, 3, 4, 10, 11, 21]

Puisque l'algorithme ci-dessus a une sélection constante de critères (la dernière valeur), il sera inefficace en fonction de la disposition des données. Le montant du calcul peut être O (n ^ 2) Les récurrences peuvent être trop profondes et une erreur peut se produire Par conséquent, il est nécessaire de concevoir des moyens de sélectionner des critères tels que la randomisation et la sélection de la valeur médiane.

référence

Algorithme de tri et implémentation en Python

Recommended Posts

Un mémo que j'ai écrit un tri rapide en Python
J'ai écrit une classe en Python3 et Java
J'ai écrit python en japonais
Un mémo que j'ai touché au magasin de données avec python
J'ai écrit Fizz Buzz en Python
J'ai écrit la file d'attente en Python
J'ai écrit la pile en Python
J'ai essayé "un programme qui supprime les déclarations en double en Python"
J'ai écrit un script qui divise l'image en deux
tri rapide en python
J'ai fait un programme de gestion de la paie en Python!
J'ai créé un outil de mot de passe en Python.
Un mémo qui gère les guillemets doubles pleine largeur avec les expressions régulières Python
[Python] Un mémo que j'ai essayé de démarrer avec asyncio
J'ai écrit une fonction pour charger le script d'extension Git en Python
J'ai écrit un script pour extraire les liens de pages Web en Python
J'ai écrit un code pour convertir quaternion en angle de graissage de type z-y-x avec Python
J'ai créé une application Web en Python qui convertit Markdown en HTML
Je veux créer une fenêtre avec Python
J'ai essayé de jouer à un jeu de frappe avec Python
[Python] J'ai écrit un code simple qui génère automatiquement AA (Ascii Art)
Un programme qui supprime les instructions en double en Python
J'ai écrit "Introduction à la vérification des effets" en Python
Un mémo que j'ai écrit un tri de fusion en Python
J'ai créé un bot Discord en Python qui se traduit quand il réagit
J'ai écrit un modèle de conception dans l'édition Kotlin Prototype
J'ai essayé de développer un formateur qui génère des journaux Python en JSON
[Python] J'ai écrit de force une courte fonction de génération de bruit parlin dans Numpy.
J'ai essayé d'ajouter un module Python 3 en C
[IOS] J'ai créé un widget qui affiche la tendance de Qiita dans Pythonista3. [Python]
J'ai écrit un analyseur japonais en japonais en utilisant pyparsing.
J'ai écrit FizzBuzz en python en utilisant la machine à vecteurs de support (bibliothèque LIVSVM).
J'ai créé un programme cryptographique César en Python.
J'ai écrit un tri-arbre qui peut être utilisé pour l'implémentation de dictionnaire à grande vitesse en langage D et Python
J'ai écrit un graphe comme R glmnet en Python pour une modélisation clairsemée avec Lasso
J'ai essayé de créer une classe qui peut facilement sérialiser Json en Python
[Examen d'ingénieur d'information de base] J'ai écrit un algorithme de recherche linéaire en Python.
Je souhaite créer une file d'attente prioritaire pouvant être mise à jour avec Python (2.7)
J'ai enregistré PyQCheck, une bibliothèque qui peut effectuer QuickCheck avec Python, dans PyPI.
[Débutant] Que se passe-t-il si j'écris un programme qui s'exécute sur php en Python?
Notez que je comprends l'algorithme des moindres carrés. Et je l'ai écrit en Python.
J'ai écrit un module PyPI qui étend le style de paramètre dans le module sqlite3 de Python
En Python, j'ai créé un LINE Bot qui envoie des informations sur le pollen à partir des informations de localisation.
Je souhaite intégrer une variable dans une chaîne Python
Je veux facilement implémenter le délai d'expiration en python
J'ai écrit un modèle de conception dans l'édition Kotlin Factory
J'ai écrit un modèle de conception dans l'édition Kotlin Builder
Je veux écrire en Python! (2) Écrivons un test
J'ai écrit un modèle de conception dans l'édition Kotlin Singleton
J'ai créé une VM qui exécute OpenCV pour Python
J'ai écrit un modèle de conception dans l'édition Kotlin Adapter
J'ai essayé d'implémenter un pseudo pachislot en Python
J'ai écrit un modèle de conception en kotlin, édité par Iterator
Je veux échantillonner au hasard un fichier avec Python
Je veux travailler avec un robot en python.
Que contient cette variable (lorsque le script Python est en cours d'exécution)
En Python, créez un décorateur qui accepte dynamiquement les arguments Créer un décorateur