Ocena użytkownikóww: ***** / 7
Nadesłany przez Rafał Gawlik, 20 listopada 2012 14:22
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.countsort.py:
import random
#counting sort - sortowanie przez zliczanie
#Rafal Gawlik
#rafal.gawlik@gmail.com
#www.algorytm.org
#sortowanie
#zakres wartosci liczb w tablicy jest taki sam jak zakres ich indeksow
def counting_sort(L):
"""Sortowanie counting sort"""
tab_pom = []
print("[LOG] Tworzenie tablicy pomocniczej")
for i in range(0,len(L)):
tab_pom.append(0);
print("[LOG] zliczanie poszczegolnych lementow")
for a in L:
print("[LOG] zliczono element: " + str(a))
tab_pom[a] = tab_pom[a] + 1
print("[LOG] Ukladanie posortoanej tablicy")
k = 0 #index tablicy
for a in range(0,len(L)):
for c in range(0,tab_pom[a]):
L[k] = a
k = k + 1
return L
def malejaco(n):
"""Ustalenie listy posortowanej malejaco"""
L = []
for i in range(0,n):
L.append(n-i-1)
return L
def losowe(n):
"""Ustalenie listy losowaymi wartosciami"""
L = []
a = range(0,n)
for i in range(0,n):
L.append(random.choice(a))
return L
n = input('Podaj ilosc danych: ')
w = input('Dane wejsciowe: Losowo/Malejaco [1/2]: ')
if int(w) == 1:
L = losowe(int(n))
print(L)
elif int(w) == 2:
L = malejaco(int(n))
print(L)
else:
print('napisales bzdure')
L = counting_sort(L)
print('Po posortowaniu:')
print(L)