Sortowanie głupie

0

Witam, mam problem z moim kodem, mianowicie muszę napisać "sortowanie głupie" wyglądające mniej więcej tak:
screenshot-20200515222835.png
Mam taki kod:

def sortowanie_glupie(d):
    i = 0
    n = len(d)
    while i < n -1:
        if d[i+1] < d[i]:
            d[i], d[i+1] = d[i+1], d[i]
            i = 0
        else:
            i = i + 1
    return(d)

L = [3, 2 ,12 ,8 ,2 ,9]
print(sortowanie_glupie(L))

Ale chciałbym go zmodyfikować i zrobić na pętli for. Zrobiłem coś takiego:

def sortowanie_glupie(d):
    n = len(d) 
    for i in range(0,n-1):
        if(d[i] <= d[i+1]):
            d[i], d[i+1] = d[i+1], d[i]
        continue
    return(d)

print(sortowanie_glupie([3, 2, 9, 12, 2, 0, 1, 2, 3, 2]))

Ale niestety nie działa. Jakiś pomysł jak to naprawić?

0

Co znaczy "nie działa"? Wróżką nie jestem

EDIT.
Warunek masz źle

(d[i] <= d[i+1]):
0

range(k) === 0,1,2,..., k**-1**

To co robisz w drugim algorytmie to polowa bubblesorta. Tylko, ze bubblesort jest O(n^2) a Twoja proba jest O(n) - co moze pojsc nie tak?;)

https://eduinf.waw.pl/inf/alg/003_sort/m0004.php

PS: po co swapowac kiedy liczby sa rowne? A co jesli bys sortowal rekordy gdzie kazdy ma po megabajt rozmiaru?

1 użytkowników online, w tym zalogowanych: 0, gości: 1