Heim >Backend-Entwicklung >Python-Tutorial >Ausführliche Erläuterung einfacher Analysen und Codebeispiele zur Verwendung des Einfügungssortierungsalgorithmus in Python

Ausführliche Erläuterung einfacher Analysen und Codebeispiele zur Verwendung des Einfügungssortierungsalgorithmus in Python

高洛峰
高洛峰Original
2017-03-06 13:32:561303Durchsuche

Problembeschreibung

Ordnen Sie eine Reihe zufällig angeordneter Zahlen in der Reihenfolge von klein nach groß neu an.

Einfügealgorithmus

Nimmt jeweils eine Zahl aus dem Array, vergleicht sie mit der vorhandenen Zahl und fügt sie an der entsprechenden Position ein.

Wiederholen Sie diesen Vorgang jedes Mal, wenn Sie die vorhandenen Nummern in der richtigen Reihenfolge halten können, bis die Nummern herausgenommen werden, das heißt, die Sortierung ist erfolgreich.

Dies ist der Situation beim Kartenziehen beim Kartenspielen sehr ähnlich.

Die erste Bedingung: Halten Sie die Reihenfolge der Karten in Ihrer Hand korrekt.
Die zweite Bedingung: Ziehen Sie alle Karten neu Zeit: Die Karten werden der Reihe nach in die Mitte der Handkarten gesteckt.
Lassen Sie diese beiden Punkte unverändert, dann werden die letzten Karten in Ihrer Hand, egal wie viele Karten Sie ziehen, in der richtigen Reihenfolge angeordnet.

Python-Implementierung:

def insertion_sort(n):
 if len(n) == 1:
  return n
 b = insertion_sort(n[1:])
 m = len(b)
 for i in range(m):
  if n[0] <= b[i]:
   return b[:i]+[n[0]]+b[i:]
 return b + [n[0]]


Eine andere Version:

def insertion_sort(lst):
 if len(lst) == 1:
  return lst

 for i in xrange(1, len(lst)):
  temp = lst[i]
  j = i - 1
  while j >= 0 and temp < lst[j]:
   lst[j + 1] = lst[j]
   j -= 1
  lst[j + 1] = temp
 return lst


Für detailliertere Erklärungen einfacher Analysen und Codebeispiele für die Verwendung des Einfügungssortierungsalgorithmus in Python achten Sie bitte auf PHP Chinesische Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn