From 956871e340dbf72084c4a6a1b7563e01b0256802 Mon Sep 17 00:00:00 2001 From: Vinicius Silva Date: Mon, 13 May 2024 12:12:23 -0300 Subject: [PATCH] Adding more algorithms --- algoritmos/ordenacao/bubble.py | 27 +++++++++++++++++++++++++++ algoritmos/ordenacao/insertion.py | 20 ++++++++++++++++++++ algoritmos/ordenacao/selection.py | 25 +++++++++++++++++++++++++ algoritmos/pesquisa/binary.py | 24 ++++++++++++++++++++++++ algoritmos/pesquisa/sequential.py | 15 +++++++++++++++ 5 files changed, 111 insertions(+) create mode 100644 algoritmos/ordenacao/bubble.py create mode 100644 algoritmos/ordenacao/insertion.py create mode 100644 algoritmos/ordenacao/selection.py create mode 100644 algoritmos/pesquisa/binary.py create mode 100644 algoritmos/pesquisa/sequential.py diff --git a/algoritmos/ordenacao/bubble.py b/algoritmos/ordenacao/bubble.py new file mode 100644 index 0000000..f950654 --- /dev/null +++ b/algoritmos/ordenacao/bubble.py @@ -0,0 +1,27 @@ + +lista = [0,1,5,3,15,16,9,10,4,3,30,5,20,48,71,82] + +def swap(i ,j): + tmp = lista[i] + lista[i] = lista[j] + lista[j] = tmp + +def buble(): + + for i in range(0, len(lista)): + + j = len(lista)-1 + less_pos = j + + while i < j: + if lista[j] < lista[less_pos]: + less_pos = j + j -= 1 + + if lista[less_pos] < lista[i]: + swap(i, less_pos) + + +if __name__ == '__main__': + buble() + print(lista) \ No newline at end of file diff --git a/algoritmos/ordenacao/insertion.py b/algoritmos/ordenacao/insertion.py new file mode 100644 index 0000000..d7d1dd5 --- /dev/null +++ b/algoritmos/ordenacao/insertion.py @@ -0,0 +1,20 @@ + +lista = [0,1,5,3,15,16,9,10,4,3,30,5,20,48,71,82] + +def swap(i, j): + tmp = lista[i] + lista[i] = lista[j] + lista[j] = tmp + +def insertion(): + + for i in range(0, len(lista)): + j = i + + while j > 0 and lista[j-1] > lista[j]: + swap(j, j-1) + j -= 1 + +if __name__ == '__main__': + insertion() + print(lista) \ No newline at end of file diff --git a/algoritmos/ordenacao/selection.py b/algoritmos/ordenacao/selection.py new file mode 100644 index 0000000..788756d --- /dev/null +++ b/algoritmos/ordenacao/selection.py @@ -0,0 +1,25 @@ +lista = [0,1,5,3,15,16,9,10,4,3,30,5,20,48,71,82] + +def swap(i, j): + tmp = lista[i] + lista[i] = lista[j] + lista[j] = tmp + +def selection(): + + for i in range(0, len(lista)): + + less_pos = i + + for j in range((i+1), len(lista)): + + if lista[j] < lista[less_pos]: + less_pos = j + + if less_pos != i: + swap(less_pos, i) + +if __name__ == '__main__': + selection() + + print(lista) \ No newline at end of file diff --git a/algoritmos/pesquisa/binary.py b/algoritmos/pesquisa/binary.py new file mode 100644 index 0000000..d4036a6 --- /dev/null +++ b/algoritmos/pesquisa/binary.py @@ -0,0 +1,24 @@ +lista = sorted([0,1,5,3,15,16,9,10,4,3,30,5,20,48,71,82]) + +def binary_callable(val): + return binary(val, 0, len(lista)-1) + +def binary(val, i, j): + + middle = int((i + j)/2) + + if j < i: + return False + elif val == lista[middle]: + return True + elif val > lista[middle]: + return binary(val, middle+1, j) + else: + return binary(val, i, middle-1) + +if __name__ == '__main__': + print('FOUND') if binary_callable(-1) else print('NOT FOUND') + print('FOUND') if binary_callable(4) else print('NOT FOUND') + print('FOUND') if binary_callable(0) else print('NOT FOUND') + print('FOUND') if binary_callable(82) else print('NOT FOUND') + print('FOUND') if binary_callable(88) else print('NOT FOUND') \ No newline at end of file diff --git a/algoritmos/pesquisa/sequential.py b/algoritmos/pesquisa/sequential.py new file mode 100644 index 0000000..83597ee --- /dev/null +++ b/algoritmos/pesquisa/sequential.py @@ -0,0 +1,15 @@ +lista = [0,1,5,3,15,16,9,10,4,3,30,5,20,48,71,82] + +def sequential(val): + + for element in lista: + if element == val: return True + return False + +if __name__ == '__main__': + + print('FOUND') if sequential(-1) else print('NOT FOUND') + print('FOUND') if sequential(4) else print('NOT FOUND') + print('FOUND') if sequential(0) else print('NOT FOUND') + print('FOUND') if sequential(82) else print('NOT FOUND') + print('FOUND') if sequential(88) else print('NOT FOUND') \ No newline at end of file