[Python] Essayez de créer vous-même un programme de tri. (Tri sélectif, tri par insertion, tri par bulle)

[Python] Essayez de créer vous-même un programme de tri. (Tri sélectif, tri par insertion, tri par bulle)

  1. [Tri sélectif](# Tri sélectif)
  2. [Tri par insertion](# Tri par insertion)
  3. [Tri à bulles](# Tri à bulles)

Tri sélectif

Trouvez la valeur minimale et remplacez-la par le premier élément.

Dans le traitement proprement dit, il est nécessaire de combiner plusieurs idées. (1) Trouvez la valeur minimale (2) Remplacez la valeur minimale par la première valeur (3) Répéter (1) et (2) dans une valeur dont le début n'est pas fixe


Tri sélectif


def min_init(arr, x):
  min = x
  for i in range(x, len(arr)):
    if arr[min] > arr[i]:
      arr[i], arr[min] = arr[min], arr[i]

def min_sort(arr):
  for j in range(0, len(arr)-1):
    min_init(arr, j)
  print(arr)

Exemple d'exécution


a = [2,4,5,3,10,1,8,6]
min_sort(a)

#[1, 2, 3, 4, 5, 6, 8, 10]

Façon de penser

(1) Trouvez la valeur minimale

Tout d'abord, considérez la formule pour trouver la valeur minimale. La valeur initiale de min est définie sur 0 et elle est comparée aux valeurs numériques suivantes. Swap min lorsque le nombre suivant est petit

python


#Trouvez la valeur minimale
def min_val(arr):
  min = 0
  for i in range(1, len(arr)):
    if arr[min] > arr[i]:
      min = i
  print(a[min])


#Vérification
a = [2,4,5,3,10,1,8,6,3,2]
min_val(a)

#1

(2) Remplacez la valeur minimale par la première valeur

En appliquant le programme ci-dessus pour trouver la valeur minimale, la valeur est échangée avec la première valeur lorsque la valeur minimale est trouvée.

Enfin, trouvez le tableau dont la valeur minimale vient en premier.

python


#Trouvez la valeur minimale et passez au début du tableau
def min_first(arr):
  min = 0
  for i in range(1, len(arr)):
    if arr[min] > arr[i]:
      arr[i], arr[min] = arr[min], arr[i]
  print(a)


#Vérification
a = [2,4,5,3,10,1,8,6]
min_first(a)

#[1, 4, 5, 3, 10, 2, 8, 6]

(3) Répéter (1) et (2) dans une valeur dont le début n'est pas fixe

Le processus est répété en appliquant ce qui précède. Notez que la valeur initiale de min est utilisée comme variable. En faisant cela, la plage cible de comparaison recule un par un.

S'il est défini sur une valeur constante, il sera toujours comparé à la même valeur et la sortie cible ne sera pas obtenue.

python


def min_init(arr, x):
  min = x
  for i in range(x, len(arr)):
    if arr[min] > arr[i]:
      arr[i], arr[min] = arr[min], arr[i]

def min_sort(arr):
  for j in range(0, len(arr)-1):
    min_init(arr, j)
  print(arr)

#Vérification
a = [2,4,5,3,10,1,8,6]
min_sort(a)

#[1, 2, 3, 4, 5, 6, 8, 10]

## Insérer un tri Comment déterminer où ajouter le numéro suivant, en supposant que le début a été trié.

-Comparer la première valeur non triée avec la valeur précédente -Si la valeur non triée est plus petite, la valeur non triée est remplacée par une valeur plus grande. (Les valeurs non triées sont stockées sous forme de variables) ・ Confirmez quand le non trié devient plus grand

python


def insert_sort(arr):
  for i in range(1,len(arr)):
    tmp = arr[i]  #Haut non trié
    j = i -1   #Trié en dernier (un avant non trié)
    
    #Comparez les éléments et si tmp est plus petit, j+Remplacez la valeur de 1
    while arr[j] > tmp and j >= 0:
      arr[j+1] = arr[j]
      j -= 1

    #Si tmp est plus grand, j+Confirmer 1 avec tmp
    arr[j+1] = tmp

Vérification


a = [2,4,5,3,10,1,8,6]
insert_sort(a)
print(a)

#[1, 2, 3, 4, 5, 6, 8, 10]

Qu'est-ce que tmp

variable. Utilisé pour spécifier des variables temporaires dont les valeurs sont ajoutées ou supprimées de manière séquentielle. Abréviation de temporaire.


## Tri à bulles Par derrière, comparez et échangez les éléments adjacents.

Lorsque les deux premiers sont comparés, le premier est fixe. Répétez la même opération pour les éléments restants.

En tant que flux de traitement, (1) Comparez la dernière valeur avec la valeur adjacente et échangez si elle est plus petite. (2) Répétez le travail de (1). Le début est fixé une fois.

python


def bubble_sort(arrs):
  for j in range(0, len(arrs)):
    exchange(arrs, j)

def exchange(arr, j):
  for i in range(len(arr)-1, j, -1):
    if arr[i-1] > arr[i]:
      arr[i-1], arr[i] = arr[i], arr[i-1]
#Vérification
a = [2,4,5,3,10,1,8,6]
bubble_sort(a)
print(a)

#[1, 2, 3, 4, 5, 6, 8, 10]

** ▼ (Référence) Comparez et échangez les valeurs adjacentes **

python


#Avancer de petits nombres
def exchange(arr):
  for i in range(len(arr)-1, 0, -1):
    if arr[i-1] > arr[i]:
      arr[i-1], arr[i] = arr[i], arr[i-1]
  print(arr)


#Vérification
a=[8,2,6,1]
exchange(a)

#[1, 8, 2, 6]

Recommended Posts

[Python] Essayez de créer vous-même un programme de tri. (Tri sélectif, tri par insertion, tri par bulle)
J'ai essayé de programmer la bulle de tri par langue
Essayez de créer un code de "décryptage" en Python
Essayez de créer un groupe de dièdre avec Python
Essayez de créer un module Python en langage C
Faisons un outil de veille de commande avec python
Tri par bulles, tri par sélection, tri par insertion, tri par shell, tri par fusion, tri rapide, tri par comptage (Python)
[Python] Comment créer une liste de chaînes de caractères caractère par caractère
Réponse à la sélection des débutants d'AtCoder par Python3
[Python] Comment rendre une classe itérable
Essayez de créer un logiciel de capture aussi précis que possible avec python (2)
[Ev3dev] Faisons un programme de contrôle à distance par Python avec le protocole RPyC
Comment trier en spécifiant une colonne dans le tableau Python Numpy.
Calculons en fait le problème statistique avec Python
Essayez de dessiner une courbe de vie avec python
Je veux faire un jeu avec Python
[python] Comment trier par le Nth Mth élément d'un tableau multidimensionnel
WEB grattage avec python et essayez de créer un nuage de mots à partir des critiques
[Python] Comment trier les instances par variables d'instance
J'ai essayé d'implémenter le tri sélectif en python
Explication de base de Lark (faites un gars comme une coquille avec Python, Lark)
Essayez de faire une stratégie de blackjack en renforçant l'apprentissage (② Enregistrer l'environnement dans le gymnase)
Faisons un saut dans l'industrie manufacturière en utilisant le Web en plus de Python
(Python) Essayez de développer une application Web en utilisant Django
Comment créer un package Python à l'aide de VS Code
[Python] Je veux faire d'une liste imbriquée un taple
Les débutants en apprentissage automatique essaient de créer un arbre de décision
Comment enregistrer une table récupérée par python en csv
Tri à bulles en Python
Essayez de faire une stratégie de blackjack en renforçant l'apprentissage (③ Renforcer l'apprentissage dans votre propre environnement OpenAI Gym))
Essayez de le faire avec GUI, PyQt en Python
Comment exécuter un programme Python à partir d'un script shell
J'ai écrit rapidement un programme pour étudier la DI avec Python ①
Ecrire un programme python pour trouver la distance d'édition [python] [distance Levenshtein]
Expérimentez pour créer un PDF indépendant pour Kindle avec Python
[Python] Un programme qui crée un tableau à deux dimensions en combinant des entiers
Essayez d'ouvrir une sous-fenêtre avec PyQt5 et Python
[Python] Essayez de classer les boutiques de ramen par traitement du langage naturel
J'ai essayé de trier une colonne FizzBuzz aléatoire avec un tri à bulles.
J'ai fait un chronomètre en utilisant tkinter avec python
Comment remplacer une méthode de type défini par l'utilisateur générée par python swig
[Introduction à Tensorflow] Comprendre correctement Tensorflow et essayer de créer un modèle
Je veux ajouter un joli complément à input () en python
Essayez simplement de recevoir un webhook avec ngrok et Python
[Python] J'ai essayé de créer un programme simple qui fonctionne sur la ligne de commande en utilisant argparse
Une route vers Python intermédiaire
Programme de formation des nouveaux arrivants par Python
Essayez de comprendre Python soi
Créer un bookmarklet en Python
Faites une loterie avec Python
Les débutants en Python organisent des sortes de bulles
Essayez de sélectionner une langue
Trier par date en python
[5e] J'ai essayé de créer un certain outil de type Authenticator avec python
Comment démarrer par lots un programme Python créé avec le notebook Jupyter
Rejoignez CSV normalisé par les pandas Python pour faciliter la vérification
Rubyist a essayé de créer une API simple avec Python + bouteille + MySQL
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python