Advertisement
Guest User

AVA UFAL: Inicio

a guest
Feb 17th, 2020
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.72 KB | None | 0 0
  1.  
  2. def main():
  3. lista = [2,1]
  4. print(quick_sort(lista,0,len(lista)-1))
  5. print(shell_sort(lista))
  6.  
  7. def selection(lista):
  8. for i in range(len(lista)-1):
  9. menor = i
  10. for j in range(i,len(lista)):
  11. if lista[j]<lista[menor]:
  12. menor = j
  13.  
  14. aux = lista[i]
  15. lista[i] = lista[menor]
  16. lista[menor] = aux
  17. return lista
  18.  
  19. def insertion(lista):
  20.  
  21. for i in range(1,len(lista)):
  22. j = i
  23. while lista[j]< lista[j-1] and j>0:
  24. aux = lista[j]
  25. lista[j] = lista[j-1]
  26. lista[j-1] = aux
  27. j -=1
  28. return lista
  29.  
  30. def bubble(lista):
  31. for i in range(len(lista)-1):
  32. for j in range(len(lista)-1-i):
  33. if lista[j]>lista[j+1]:
  34. lista[j],lista[j+1]=lista[j+1],lista[j]
  35. return lista
  36.  
  37.  
  38. main()
  39.  
  40. ##
  41.  
  42. def merge_sort(lista):
  43. return divisao(lista)
  44.  
  45. def divisao(lista):
  46. #dividir a lista
  47. lista1 = lista2= []
  48. if len(lista)>1:
  49. meio = len(lista)//2
  50. lista1 = divisao(lista[0:meio])
  51. lista2 = divisao(lista[meio:])
  52. return combinacao(lista1,lista2)
  53. else:
  54. return lista
  55.  
  56. def combinacao(lista1,lista2):
  57. i = j = 0
  58. lista = []
  59. for c in range(len(lista1)+len(lista2)):
  60. if i == len(lista1):
  61. lista.append(lista2[j])
  62. j+=1
  63.  
  64. elif j == len(lista2):
  65. lista.append(lista1[i])
  66. i+=1
  67.  
  68. elif lista1[i]<lista2[j]:
  69. lista.append(lista1[i])
  70. i+=1
  71. else:
  72. lista.append(lista2[j])
  73. j+=1
  74. return lista
  75.  
  76. ##
  77.  
  78. def shell_sort(lista):
  79. h = 1
  80. while h<len(lista):
  81. h = 3*h+1
  82. print('h: ',h)
  83. while h!=1:
  84. h = h//3
  85. print('h: ',h)
  86. for i in range(h,len(lista)):
  87. aux = lista[i]
  88. j = i
  89. while lista[j-h]>aux:
  90. lista[j] = lista[j-h]
  91. j-=h
  92. if j<h:
  93. break
  94. lista[j] = aux
  95. return lista
  96.  
  97. ##
  98.  
  99. def quick_sort(lista,p,r):
  100. if p<r:
  101. q = particao(lista,p,r)
  102. quick_sort(lista,p,q)
  103. quick_sort(lista,q+1,r)
  104. return lista
  105.  
  106. def particao(lista,p,r):
  107. pivo = lista[(p+r)//2]
  108. i = p-1
  109. j = r+1
  110. while i < j:
  111. j-=1
  112. while lista[j]>pivo:
  113. j-=1
  114. i +=1
  115. while lista[i]<pivo:
  116. i+=1
  117. if i<j:
  118. lista[i],lista[j] = lista[j],lista[i]
  119. return j
  120.  
  121. ##
  122.  
  123. class Celula:
  124. item = None
  125. proximo = None
  126.  
  127. def __init__(self,item):
  128. self.item = item
  129.  
  130. class PilhaEncadeada:
  131. topo = None
  132. tamanho = 0
  133.  
  134. def estaVazia(self):
  135. return True if self.tamanho==0 else False
  136.  
  137. def empilhar(self,item):
  138. aux = self.topo
  139. self.topo = Celula(item)
  140. self.topo.proximo = aux
  141. self.tamanho +=1
  142.  
  143.  
  144. def desempilhar(self):
  145. if not self.estaVazia():
  146. item = self.topo.item
  147. self.topo = self.topo.proximo
  148. self.tamanho -=1
  149. return item
  150. else:
  151. return ''
  152.  
  153. def verTamanho(self):
  154. return self.tamanho
  155.  
  156.  
  157. def imprimir(self):
  158. aux = self.topo
  159. while aux!=None:
  160. print(aux.item)
  161. aux = aux.proximo
  162.  
  163. ##
  164.  
  165. class Celula:
  166. item = None
  167. proximo = None
  168.  
  169. def __init__(self,item):
  170. self.item = item
  171.  
  172. class FilaEncadeada:
  173. inicio = None
  174. fim = None
  175. tamanho = None
  176.  
  177. def __init__(self):
  178. self.tamanho = 0
  179.  
  180. def estaVazia(self):
  181. return self.tamanho == 0
  182.  
  183.  
  184. def enfileirar(self,item):
  185. if self.estaVazia():
  186. self.inicio = Celula(item)
  187. self.fim = self.inicio
  188. else:
  189. self.fim.proximo = Celula(item)
  190. self.fim = self.fim.proximo
  191. self.tamanho +=1
  192.  
  193. def desenfileirar(self):
  194. if not self.estaVazia():
  195. aux = self.inicio
  196. self.inicio = self.inicio.proximo
  197. item = aux.item
  198. del aux
  199. self.tamanho -= 1
  200. return item
  201. else:
  202. print('Está vazia')
  203.  
  204.  
  205.  
  206.  
  207.  
  208. def imprimir(self):
  209. aux = self.inicio
  210. while aux!=None:
  211. print(aux.item)
  212. aux = aux.proximo
  213. print('---')
  214.  
  215.  
  216. ###
  217.  
  218. class Celula:
  219. item = None
  220. proximo = None
  221.  
  222. def __init__(self,item):
  223. self.item = item
  224.  
  225. class Lista_Encadeada:
  226. inicio = None
  227. quantidade = None
  228.  
  229. def __init__(self):
  230. self.quantidade = 0
  231.  
  232.  
  233. def estaVazia(self):
  234. return self.quantidade == 0
  235.  
  236. def inserir(self,pos,item):
  237. if self.estaVazia():
  238. self.inicio = Celula(item)
  239. self.quantidade+=1
  240. else:
  241. if pos <= self.quantidade + 1:
  242. p = self.inicio
  243. for i in range(pos-1):
  244. p = p.proximo
  245. aux = Celula(item)
  246. aux.proximo = p.proximo
  247. p.proximo = aux
  248. self.quantidade +=1
  249. else:
  250. print('operacao invalida')
  251.  
  252.  
  253. def remover(self,pos):
  254. if not self.estaVazia():
  255. if pos <= self.quantidade:
  256. if pos == 0:
  257. aux = self.inicio
  258. self.inicio = aux.proximo
  259. item = aux.item
  260. del aux
  261. self.quantidade -= 1
  262. return item
  263. else:
  264. p = self.inicio
  265. for i in range(pos-1):
  266. p = p.proximo
  267. aux = p.proximo
  268. item = aux.item
  269. p.proximo = aux.proximo
  270. self.quantidade -=1
  271. del aux
  272. return item
  273. else:
  274. print('operacao invalida')
  275. else:
  276. print('operacao invalida')
  277.  
  278.  
  279. def imprimir(self):
  280. p = self.inicio
  281. while p!= None:
  282. print(p.item,end=' ')
  283. p = p.proximo
  284. print('\n---')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement