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]
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
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]
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]
-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]
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.
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