Suchen Sie den Mindestwert und ersetzen Sie ihn durch das erste Element.
Bei der eigentlichen Verarbeitung müssen mehrere Ideen kombiniert werden. (1) Finden Sie den Mindestwert (2) Ersetzen Sie den Mindestwert durch den ersten Wert (3) Wiederholen Sie (1) und (2) in einem Wert, dessen Anfang nicht festgelegt ist
Selektive Sortierung
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)
Ausführungsbeispiel
a = [2,4,5,3,10,1,8,6]
min_sort(a)
#[1, 2, 3, 4, 5, 6, 8, 10]
Betrachten Sie zunächst die Formel zum Ermitteln des Mindestwerts. Der Anfangswert von min wird auf 0 gesetzt und mit den folgenden numerischen Werten verglichen. Tauschen Sie min, wenn die nächste Zahl klein ist
python
#Finden Sie den Mindestwert
def min_val(arr):
min = 0
for i in range(1, len(arr)):
if arr[min] > arr[i]:
min = i
print(a[min])
#Bestätigung
a = [2,4,5,3,10,1,8,6,3,2]
min_val(a)
#1
Durch Anwenden des obigen Programms zum Finden des Minimalwerts wird der Wert mit dem ersten Wert ausgetauscht, wenn der Minimalwert gefunden wird.
Suchen Sie schließlich das Array, dessen Mindestwert an erster Stelle steht.
python
#Suchen Sie den Mindestwert und gehen Sie zum Anfang des Arrays
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)
#Bestätigung
a = [2,4,5,3,10,1,8,6]
min_first(a)
#[1, 4, 5, 3, 10, 2, 8, 6]
Der Vorgang wird wiederholt, indem das Obige angewendet wird. Beachten Sie, dass der Anfangswert von min als Variable verwendet wird. Auf diese Weise verschiebt sich der Vergleichszielbereich nacheinander rückwärts.
Wenn es auf einen konstanten Wert eingestellt ist, wird es immer mit demselben Wert verglichen und die Zielausgabe wird nicht erhalten.
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)
#Bestätigung
a = [2,4,5,3,10,1,8,6]
min_sort(a)
#[1, 2, 3, 4, 5, 6, 8, 10]
-Vergleichen Sie den unsortierten ersten Wert mit dem vorherigen Wert -Wenn der unsortierte Wert kleiner ist, wird der unsortierte Wert mit einem größeren Wert überschrieben. (Unsortierte Werte werden als Variablen gespeichert) ・ Bestätigen Sie, wenn der unsortierte größer wird
python
def insert_sort(arr):
for i in range(1,len(arr)):
tmp = arr[i] #Unsortiertes Top
j = i -1 #Zuletzt sortiert (eine vor unsortiert)
#Vergleichen Sie die Elemente und wenn tmp kleiner ist, j+Ersetzen Sie den Wert 1
while arr[j] > tmp and j >= 0:
arr[j+1] = arr[j]
j -= 1
#Wenn tmp größer ist, j+Bestätige 1 mit tmp
arr[j+1] = tmp
Bestätigung
a = [2,4,5,3,10,1,8,6]
insert_sort(a)
print(a)
#[1, 2, 3, 4, 5, 6, 8, 10]
Variable. Wird verwendet, um temporäre Variablen anzugeben, deren Werte nacheinander hinzugefügt oder entfernt werden. Abkürzung für vorübergehend.
Wenn die ersten beiden verglichen werden, ist die erste fest. Wiederholen Sie den gleichen Vorgang für die übrigen Elemente.
Als Verarbeitungsablauf (1) Vergleichen Sie den letzten Wert mit dem benachbarten Wert und ersetzen Sie ihn, falls er kleiner ist. (2) Wiederholen Sie die Arbeit von (1). Der Anfang ist einmal festgelegt.
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]
#Bestätigung
a = [2,4,5,3,10,1,8,6]
bubble_sort(a)
print(a)
#[1, 2, 3, 4, 5, 6, 8, 10]
** ▼ (Referenz) Benachbarte Werte vergleichen und austauschen **
python
#Bewegen Sie kleine Zahlen vorwärts
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)
#Bestätigung
a=[8,2,6,1]
exchange(a)
#[1, 8, 2, 6]
Recommended Posts