Bubble Sort
def bubblesort(lista, n):
troca = True
while troca:
troca = False
for i in range(n-1):
if lista[i] > lista[i+1]:
lista[i], lista[i+1] = lista[i+1], lista[i]
troca = True
n-=1
return lista
Insertion Sort
def insertionSort(lista):
for i in range(1, len(lista)):
chave = lista[i]
j = i
while j > 0 and lista[j - 1] > chave:
lista[j] = lista[j - 1]
j = j - 1
lista[j] = chave
return lista
Selection Sort
def selection(lista):
n = len(lista)
for i in range(n-1):
mini = i
for j in range(i+1, n):
if lista[j] < lista[mini]:
mini = j
lista[i], lista[mini] = lista[mini], lista[i]
return lista
Merge Sort
def mergeSort(lista):
if len(lista)>1:
meio = len(lista)//2
ladoEsquerdo = lista[:meio]
ladoDireito = lista[meio:]
mergeSort(ladoEsquerdo)
mergeSort(ladoDireito)
i, j, k =0, 0, 0
while i < len(ladoEsquerdo) and j < len(ladoDireito):
if ladoEsquerdo[i] < ladoDireito[j]:
lista[k]= ladoEsquerdo[i]
i=i+1
else:
lista[k]=ladoDireito[j]
j=j+1
k=k+1
while i < len(ladoEsquerdo):
lista[k]=ladoEsquerdo[i]
i=i+1
k=k+1
while j < len(ladoDireito):
lista[k]=ladoDireito[j]
j=j+1
k=k+1
Quick Sort
def quicksort(vetor):
if len(vetor) <= 1:
return vetor
menor, igual, maior = [], [], []
pivo = vetor[0]
for x in vetor:
if x < pivo:
menor.append(x)
elif x == pivo:
igual.append(x)
else:
maior.append(x)
return quicksort(menor) + igual + quicksort(maior)
Sell Sort
def shellsort(nums):
n = len(nums)
h = int(n/2)
while h > 0:
#insertion sort
for i in range(h, n):
c = nums[i]
j = i
while j >= h and c < nums[j - h]:
nums[j] = nums[j - h]
j -= h
nums[j] = c
h = int(h/2.2)
return nums
Conteúdo da matéria de Fundamentos de Problemas Computacionais I.
0 Comentários