Un algorithme de tri qui réalise le montant du calcul de $ O (n) $ en ** purifiant (supprimant) les éléments qui ne sont pas dans l'ordre croissant (ordre décroissant)? Il semble que c'est devenu un sujet brûlant l'année dernière, mais je ne me suis pas rencontré.
Vous pouvez écrire très proprement avec Python3.8
ou une version ultérieure.
stalin_sort = lambda x:[m:=x[0]] + [m:=i for i in x[1:] if i>=m]
arr = [1, 2, 1, 1, 4, 3, 9]
print(stalin_sort(arr))
#---> [1, 2, 4, 9]
print(len('lambda x:[m:=x[0]] + [m:=i for i in x[1:] if i>=m]'))
#---> 50
Il a été mis en œuvre pour ignorer l'existence plutôt que pour être silencieux, mais c'était court et agréable.
Recommended Posts