algorytm.org

Implementacja w Python



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Sortowanie przez zliczanie (countingsort) - Implementacja w Python
Ocena użytkownikóww: *****  / 7
SłabyŚwietny
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)
Dodaj komentarz