Ocena użytkownikóww: ***** / 3
Nadesłany przez Kamil Socha, 15 listopada 2012 16:58
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.bubble_2_py.py:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import random
def losuj(rozmiar, od, do): # zwraca listę o podanym rozmiarze
tab=[] # z wylosowanymi wartościami
while rozmiar>0: #dopóki jakieś musi dodać
tab.append(random.randint(od,do))
rozmiar-=1 #zmniejsza ilość pozostałych komórek do wylosowania
return tab
#wersja algorytmu z falga mowiaca czy ciag liczb jest juz posorotwany -
#jezeli podczas pelnego przebiegu petli nie wykonana zostaje ani jedna
#operacja zamiany miejscami to znaczy ze ciag jest juz posortowany
#i mozna zakonczyc sortowanie
def sort(tab): #zwraca posortowaną listę
tab2=range(len(tab)) # Lista ze liczbami-indeksami
tab2.pop() # Usuniącie ostatniej liczby-indeksu
zm=0 # Zmienna zawirająca widomości czy zostały zmienione kolejności liczb
while True:
zm=0 # Resetowanie zmiennej zm
for i in tab2:
if tab[i] > tab[i+1]:
tmp=[tab[i+1], tab[i]] # szybka lista zawierające potrzebne wartości
tab[i]=tmp[0] # Nadawanie wartości w liście tab
tab[i+1]=tmp[1]
zm+=1
if zm==0: # Jeśli jeden obieg pętli nie zmienił listy zwraca listę
return tab
tab=losuj(10, 1,10)
print "przed: "+str(tab)
tab=sort(tab)
print " po: "+str(tab)
def losuj(rozmiar, od, do):
tab = []
for a in range(rozmiar):
tab.append(random.randint(od, do))
return tab
def sort2(tab): #zwraca posortowaną listę
while True:
zm=0 # Resetowanie zmiennej zm
for i in range(len(tab)-1):
if tab > tab[i+1]:
tmp=tab # szybka lista zawierające potrzebne wartości
tab=tab[i+1] # Nadawanie wartości w liście tab
tab[i+1]=tmp
zm+=1
if zm==0: # Jeśli jeden obieg pętli nie zmienił listy zwraca listę
return tab