2024. A maneira que voce explicou o algoritmo foi espetacular. Depois que caiu no Python, aí infelizmente precisei parar porque preciso implementar em C puro. Parabéns pelo conteúdo
Obrigado! Quanto ao Python, eu sugiro pensar neste linguagem como uma forma de pseudo-código (escolhi ela com isso em mente). Os melhores livros de algoritmos na minha opinião (PapadiMitriou amzn.to/3wapAf0 e Cormen amzn.to/4dqPtrM) não se apegam a nenhuma linguagem específica e aprensentam pseudo-códigos. De todo modo, acredito que o teste que valida se você realmente entendeu o algoritmo é a capacidade de implementá-lo em qualquer linguagem de programação que você conheça simplesmente a partir das ideias, sem olhar códigos prontos. Bons estudos!
Só tenho a agradecer a esse canal que achei por acaso procurando uma dúvida da faculdade, em que algumas das aulas são ead com pouco conteúdo, parabéns pelo trabalho e pela ótima explicação, já virei inscrito!
Hahaha, de nada! O único que pode se salvar é você, eu só dou uma ajudinha 😉 continue com essa postura de buscar conhecimento e aprender casa vez mais!
Acredito que o segundo "if" não é necessário. Como você esta com o índice do menor, exceto os valores já ordenados, a troca pode ser feita sem necessidade da condição. O máximo que pode ocorrer, que não é o ideal, seria a troca de dois valores iguais. Considerando o peso de um "if" no código, não sei se é válido. Mas de resto, show demais!!!!
Na parte de testes o número 76 da lista ordenada, estava fora de ordem, mas o algoritmo corrigiu isso no teste hehe Prova de que funcionou tranquilamente
Assistido✔️ Aqui marca o dia que mudou o cenário dos vídeos (você mudou de casa ou só de cômodo mesmo?) XD Por que a complexidade desse algoritmo é O(n²)? Não seria O(n) pois ele está percorrendo o array pra escolher o elemento menor e mudar a posição dele?
Mudei de casa. Kizzy e eu viemos morar juntos :) A complexidade é O(n^2), porque para cada índice do array, você pode ter que percorrer o array todo. Ou seja, só na primeira iteração do for externo, você já tem O(n). Como o laço externo executa *n* vezes, fica n^2.
Testes por classe de equivalência como no final do vídeo. Teste pelo menos essas classes: 1. Lista vazia 2. Lista já ordenada 3. Lista pseudo-aleatória 4. Lista na ordem reversa 5. Lista com duplicados 6. Lista com um único elemento
Bom vídeo. Mas amigo fiquei com uma dúvida, o segundo IF é necessário? Pq eu pensei, se eu já comparei com o primeiro elemento e achei o índice do vetor do menor, não precisa mais comparar. Mas eu posso estar errado (sou noob na programação)
Seu raciocínio está correto! O segundo if evita que haja trocas no caso em que os valores são idênticos (por exemplo, se já estiverem ordenados dali pra frente ou forem todos repetidos), mas se você remover essa condição, o algoritmo continua funcionando e não há alteração na complexidade O(n^2).
1. Busca: para encontrar dados mais rapidamente, o algoritmo mais eficiente requer que os dados estejam ordenados: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-M719mDyirW0.html 2. Desenhos vetoriais: para desenhar formas vetoriais, como as letras de um documento PDF, por exemplo, ou polígonos, é necessário definir uma ordenação dos pontos. Se você procurar por "algoritmo de fecho convexo" vai ter uma ideia do problema pra polígonos convexos. Representações côncavas são mais complicadas. Repare que o selection sort não é o algoritmo de ordenação mais eficiente.
oi, poderia me explicar o porquê daquele condicional if? após o segundo for, min_index vai ser necessariamente o índice do menor valor da lista, então acho que a condição desse if sempre vai ser verdadeira, não? lista[min_index] vai ser sempre menor que lista[j], mas não tenho certeza, por isso pergunto. o meu código ficou idêntico ao seu exceto que os comandos que você colocou no if no meu código estão sem if, dentro do for grandão mesmo, e tá funcionando certinho. de qualquer forma, obrigado, me ajudou bastante. ps: qual o editor que você usa no video?
O segundo if evita que haja trocas no caso em que os valores são idênticos (por exemplo, se já estiverem ordenados dali pra frente ou forem todos repetidos), mas se você remover essa condição, o algoritmo continua funcionando. De todo, modo, não há alteração na complexidade O(n^2) do algoritmo! O editor do vídeo é o Visual Studio Code. Nos vídeos mais antigos, usava o Atom, mas o VS Code tem sido melhor pra mim já há uns 2 anos quase.
Se você entende a teoria, tente implementá-la sem olhar o código. Quando tiver sua versão, você terá uma noção melhor de como ler outros códigos para o mesmo problema.