2017-05-17 3 views
0
funktioniert

ich bin ein Anfang Python-Programmierer und ich versuche, einen Code zu schreiben, wie unten in ansteigender Reihenfolge Daten in einem Array sortiert:in Python Sortierung nicht

A = [2,3,6,8,4,5,7,123,543,65435,31,43] 
for i in range(len(A)-1): 
    if A[i] > A[i+1]: 
     A[i] , A[i+1] = A[i+1] , A[i] 
print (A)   

jedoch das Ergebnis gibt diese:

[2, 3, 6, 4, 5, 7, 8, 123, 543, 31, 43, 65435] 

Darf ich wissen, was ich falsch mache? Jede Hilfe würde sehr geschätzt werden. Vielen Dank!

+1

Sie könnten versuchen: 'sortiert (A)' –

+5

Sie‘ Man vergleicht nur jedes Element in "A" mit dem nächsten Element. Sortieren ist komplexer als das. Lesen Sie über Sortieralgorithmen. – khelwood

+4

Ihre Lösung wird nur das höchste Element nach hinten schieben. Werfen Sie einen Blick auf Bubble sort – kuro

Antwort

1

Sie führen nur eine einzige Stufe der Blasensortierung durch; Um die Liste komplett sortiert zu bekommen, müssten Sie die Zahlen n - 1 mal hochschweben, nicht nur eine.

Versuchen Sie folgendes:

for i in range(len(A)-1): 
    for i in range(len(A)-1): 
     if A[i] > A[i+1]: 
      A[i] , A[i+1] = A[i+1] , A[i] 
1

Sie versuchen Bubble Sort zu tun. Tatsächlich funktioniert der Teil Ihres Codes, in Ihrem Ergebnis ist das größte Element am Ende des sortierten Arrays. Jetzt müssen Sie für alle übrigen Elemente in einer verschachtelten for-Schleife dasselbe tun. Deshalb Bubble Sort die Komplexität von O hat (n^2)

0
A = [2,3,6,8,4,5,7,123,543,65435,31,43] 
for i in range(0,len(A)): 
    for j in range(i+1): 
     if A[i] > A[j]: 
      A[i] , A[j] = A[j] , A[i] 
print A 

Sortierung braucht ein Element mit dem Rest der Elemente in diesem Array zu vergleichen

Verwandte Themen