Ordinare una lista di numeri
Categoria: AlgoritmiScrivere una funzione che prenda in ingresso una lista di numeri e in output ritorni la sequenza ordinata dal numero più piccolo al più grande.
Nota: rimuovere dalla lista eventuali duplicati
Aiuto: consiglio di andarti a rivedere il funzionamento delle liste qui.
Esempio:
lista1 = [2, 4, 3, 0, 5, 11, 10]
lista2 = [-100, 24, 21, -49, 12, 9, 4920, 0, 12, 3, 1, 229]
print(my_sorting(lista1))
print(my_sorting(lista2))
#output
[0, 2, 3, 4, 5, 10, 11]
[-100, -49, 0, 1, 3, 9, 12, 21, 24, 229, 4920]
Soluzione
def my_sorting(elements): sorted_list = [] current_max = 0 for i in range(len(elements)): if elements[i] >= current_max or len(sorted_list) == 0: sorted_list.append(elements[i]) current_max = elements[i] continue for j in range(len(sorted_list)-1, -1, -1): if elements[i] > sorted_list[j]: if elements[i] in sorted_list: sorted_list.remove(elements[i]) sorted_list.insert(sorted_list.index(sorted_list[j])+1, elements[i]) break if(elements[i] not in sorted_list): sorted_list.insert(0, elements[i]) return sorted_list lista1 = [2, 4, 3, 0, 5, 11, 10] lista2 = [-100, 24, 21, -49, 12, 9, 4920, 0, 12, 3, 1, 229] print(my_sorting(lista1)) print(my_sorting(lista2))