0
I implemented Selection Sort to sort the text of a . txt that I made into a list. The problem is that it only orders field 1 and field 3, field 2 it did not order, as seen in the output: 10, 100, 2, 5. Where am I missing? Thanks in advance.
Since this is a college job, I can’t use methods like Sort().
import copy
def acharMenorValor(lista,a):
menor_valor = lista[0][a]
menor_index = 0
for i in range(0,len(lista)):
if lista[i][a] < menor_valor:
menor_valor = lista[i][a]
menor_index = i
return menor_index
def selectionSort(lista,a):
novaArray = []
novaLista = copy.deepcopy(lista)
for i in range(len(novaLista)):
menor = acharMenorValor(novaLista,a)
novaArray.append(tuple(novaLista.pop(menor)))
print(f"Listagem dos produtos pelo campo: {a+1}")
for i in range(len(novaArray)):
print(novaArray[i])
print("--------------------------------------")
if __name__ == "__main__":
lista = []
file = open('trabalho.txt')
for i in range(4):
lista.append(file.readline().split())
print("Listagem de produtos lida do arquivo trabalho.txt")
for i in range(len(lista)):
print(tuple(lista[i]))
print("--------------------------------------")
#USANDO O SELECTION SORT
for i in range(len(lista)-1):
selectionSort(lista,i)
Output:
Listagem de produtos lida do arquivo trabalho.txt
('beringela', '10', '1.99')
('arroz', '5', '4.99')
('peixe', '2', '9.99')
('abacaxi', '100', '3.99')
--------------------------------------
Listagem ordenada dos produtos pelo campo: 1
('abacaxi', '100', '3.99')
('arroz', '5', '4.99')
('beringela', '10', '1.99')
('peixe', '2', '9.99')
--------------------------------------
Listagem ordenada dos produtos pelo campo: 2
('beringela', '10', '1.99')
('abacaxi', '100', '3.99')
('peixe', '2', '9.99')
('arroz', '5', '4.99')
--------------------------------------
Listagem ordenada dos produtos pelo campo: 3
('beringela', '10', '1.99')
('abacaxi', '100', '3.99')
('arroz', '5', '4.99')
('peixe', '2', '9.99')
--------------------------------------