INSERTION SORT | Algoritmos #5
ฝัง
- เผยแพร่เมื่อ 26 พ.ย. 2024
- Neste vídeo, continuamos o estudo dos algoritmos de ordenação, implementando a ordenação por inserção (insertion sort). A ordenação por inserção tenta imitar o processo que algumas pessoas utilizam (consciente ou inconscientemente) para ordenar cartas de baralho nas mãos durante um jogo. Abordando o aspecto da eficiência e da complexidade do algoritmo apresentado.
Gostou? Temos vídeos de outros algoritmos de ordenação aqui no canal :)
Se inscreva no canal para acompanhar todo o conteúdo e nos siga nas outras redes:
*Instagram: @dinamicaprogramacao @kizzy_terra @ hallpaz
*Twitter: @pgdinamica @kizzyterra @hallpaz
Códigos do vídeo: github.com/pyt...
Curta a Programação Dinâmica no facebook: program...
Confira o nosso Medium: / programacaodinamica
Confira os artigos no Python Café: pythoncafe.com.br
#ordenação #algoritmos
Cara, a forma que tu explicas detalhadamente torna o aprendizado bem mais agradável. Gratidão!
É uma geração que na comunicação, tem um dom ! Muito boa explicação, Parabéns ! Excelente vídeo ! Grande Abraço !
Obrigado!
Nossa! É incrível como tudo o que eu ando estudando encontro aqui no canal de vocês. Não parem nunca.
Obrigado, bons estudos!
Meu irmão, se você vir como isso foi explicado numa aula de engenharia de software, onde o tutor insiste que o conteúdo está bom, você cortaria os pulsos! Muito obrigado pelo conteúdo de qualidade! Mandou muito bem na didática!
Obrigado! Força aí nos estudos 👊🏾
Meu amigo, não sei o que os professores de cursos superiores fazem ali, os caras são muito ruim. Estou pagando um curso de analise e desenvolvimento, mas estou estudando no TH-cam, como pessoas como o Hallisson, ele sim, deveria esta ocupando uma cadeira em uma faculdade. o cara é dez.
@@pgdinamica Amigo, eu tentei entrar em contato pelo insta mas eu nao consegui.
QUE? algoritmo em aula de engenharia de software?
@@juliodonofreo sim, pq?
MEU DEUS QUE CANAL PERFEITO VCS SÃO TUDO PRA MIM, OBRIGADA ALGORITMO DE RECOMENDAÇÕES DO TH-cam POR ME APRESENTAR ESSA MARAVILHA
🙌🏾🙌🏾😁
Parabéns velho, tu é muito foda e ensina de uma forma muita didática , tenho 10 anos de desenvolvimento e agora to precisando rever estes conceitos, comprei vários cursos e disparado você tem o melhor conteúdo , muito grato pelo conteúdo , continue assim! Mais um inscrito ❤
Aula fantástica, Hallison!! O insertion sort sempre foi o algoritmo que me deu mais dor de cabeça dentre os 3 mais simples pra ordenação.
nossa superrrr didático vc, adorei!!
Valeu!
Muito bem explicado, parabéns!
Obrigado!
Na moral? Eu aprendi mais contigo em um vídeo de 15 minutos do que em um semestre inteiro de estrutura de dados em ADS. Continue com esse conteúdo EXCELENTE que você tem. Abraços
Legal Hallison, entendi bem.
Muito obrigado!
Top! Bons estudos!
Muito bom. Top. Vai agregar muito nos meus estudos.
Que bom que vai ajudar! 😉
Teria como trazer um sobre o "shell sort". Principalmente explicando o algoritmo. O conceito eu entendo, mas aquele algoritmo do shel sort é muito maluco. Desde ja, obrigado.
Boa tarde! Eu fiz de utilizando dois for: Segue o código.
import random
any_numbers = random.sample(range(1, 100), 25)
def insertion_sort(array):
for i in range(1, len(array)):
for j in range(i, 0, -1):
if array[j] < array[j-1]:
array[j], array[j-1] = array[j-1], array[j]
return array
entendi graças a seu comentário, pelo dele eu não estava conseguindo, valeuuu
Pra quem tiver dificuldade em entender esses algoritmos, eu aconselho criar uma lista aleatória e analisar como cada iteração interage com as linhas de código, por exemplo o array [5,3,7,9,6,14]:
na primeira iteração o array[i] vai ser igual a 3, enquanto que o array[j] vai ser igual a 5, porque j = i -1. Já que 5 é maior do que 3, e o j é igual a 0, a função vai entrar no laço while e definir o elemento array[j+1] com o valor do elemento anterior array[j]. Nesse momento nossa lista vai estar assim:
[5,5,7,9,6,14]
Agora o j vai ser decrementado em 1, definindo o valor dele como -1, e como o valor dele é -1 e o while só vai continuar funcionando caso j >= 0, ele vai pular do laço e vai definir o elemento array[j+1] com o valor de array[i], que é o 3.
Nossa lista vai ficar assim:
[3,5,7,9,6,14]
Agora é só repetir o mesmo procedimento pras outras iterações.
Excelente explicação!
Excelente vídeo
Obrigado!
Ótimo video, simples,pratico e direto..parabéns pelo conteúdo.
Valeu!
To vendo que vou levar um tempo até entender isso...
Alisson, você já tem um conteúdo exibindo o melhor e o pior caso dos algoritmos Insertion, Selection, Merge e Bubble?
Tu é um gênio, muito obrigado pela ajuda
De nada!
mano eu te amo. sou da engenharia civil e to dando isso na unicamp e voce me salvou no laboratorio dessa semana eu te amo eternamente te amo te amo
Bons estudos!
didática excelente
Muito obrigado!
Ae, valeu de mais!
🥰
obrigado irmão
De nada!
seus videos são perfeitos
Muito obrigado!
Assistido ✔️
Então basicamente é como se ele pegasse várias cartas(vou usar seu exemplo) e jogasse na mesa e pegasse de uma por um até construir uma nova mão com as cartas ordenadas? Ele "destrói" o array e monta ele de novo?
Se for isso realmente não parece muito eficiente principalmente pra muitos elementos.
Muito bom os videos sobre metodos de ordenacao! Aprendi a utilizar agora com vc! Estou aprendendo python neste momento e aos poucos aprendendo sua abrangencia, comandos e metodos... Parabens pelo trabalho! Continuem firmes! Ja ganharam uma seguidora :)
Seja bem vinda, Maria! Bosn estudos!
Explicação perfeita
Muito obrigado!
A diferença entre o insertion sort e o bubble sort é que o insertion faz a comparação com os vizinhos em pequenas listas?
top
Obrigado😊
Caraca brother! Mandou muito bem!!! Parabéns o/
Obrigado!
Fala mano, blz? Primeiro vídeo que vejo do seu canal e achei muito bom, mais 1 inscrito e vou agora ver os outros tipo de sorting! Parabéns pelo conteúdo
Valeu, Bernardo! Seja bem vindo 😁
a lista já ordenada não estava 100% ordenada ksksks, o 76 estava fora de ordem, ótimo vídeo e ótima aula
Detalhe espacial somente para os mais atentos!
Também percebi isso
Oi Halisson.
tentei implementar um algoritmo baseado na explicacao que vc deu no quadro e saiu isso aqui. Vc poderia comentar o codigo? A primeira deficiencia que notei foi foi um aumento na complexidade de espaco pois criei uma nova lista. Podemos dizer que isso é um a variacao do Insertion_sort ? Obrigado desde já
def insertion_sort(u):
lista = []
while(u):
item = u.pop()
if lista:
# colocando em ordem
i=0
while (i < len(lista)):
if item < lista[i]:
lista.insert(i,item)
break
# se for menor que o pnultimo
if i == len(lista)-1:
#poe no final da lista se "item" nao for menor que o ultimo elemento da fila
lista.append(item)
break
i=i+1
else:
#se for o primeiro elemnto a distribuir
lista.insert(0,item)
return lista
qual aplicativo/programa que você usa para escrever esses códigos do vídeo?
Visual Studio Code: Como Instalar Python e Visual Studio Code no Windows | Python do Jeito Certo 2.0
th-cam.com/video/R9dLGLVqK9Q/w-d-xo.html
Boa tarde tem algum vídeo falando sobre a ordenação por inserção tempo de consumo, ou seja o tempo de execução do mesmo?
Sai hoje às 18:00h! Análise de complexidade da ordenação por seleção, por flutuação e por inserção também!
Preocupado por ter entendido muito bem no quadro mas ter explodido os miolos e não ter entendido as trocas no código. Eu quero morrer T.T
É normal. Tenta implementar por conta própria, lembrando da ideia do algoritmo. Se for preciso, esquematize a ideia em um papel antes. Depois de tentar - conseguindo ou não - assista ao vídeo novamente. Estudar é um processo ativo.
vc pode mostrar esse algoritmo na integra passo a passo?
Oi, @83Aibones, não entendi a pergunta 🤔. O vídeo explica o algoritmo completo (funcionamento e implementação) e a descrição tem link pro código produzido, inclusive os testes. O que você precisa?
@@pgdinamica porque eu não sei como fazer pra rodar desde o começo.
queria ver como foi montado desde o inicio.
eu tenho que fazer esse trabalho e eu to perdido.
1. Implemente os algoritmos de ordenação de acordo com a tabela.
2. Teste cada algoritmos com quatro vetores (ver vetores ao final do documento)
3. Calcule o tempo que demora em ordenar os vetores cada algoritmo.
4. Fazer uma tabela com os resultados.
5. Fazer uma analises dos resultados (analisar que caraterística tem cada vetor)
6. Entregar um documento com:
Nome do aluno
Titulo do trabalho
Descrição de cada algoritmo
Código da cada algoritmo
Tabela de resultado
Analises dos resultados
Vetor1
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29
Vetor2
29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1
Vetor3
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,29,28,27,26,25,24,23,22,21,20,19,18,17,16
Vetor4
15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,16,17,18,19,20,21,22,23,24,25,26,27,28,29
Vetor5
6,17,27,1,10,14,24,2,20,8,28,7,19,12,9,5,29,3,22,11,15,18,23,25,4,16,13,26,21
tenho que testar esses vetores
@@FabricioRAPGOSPEL A implementação do algoritmo inicia em 5:51. Se você está aprendendo a programar e tem dificuldades em como executar um programa, sugiro esta outra playlist: (Introdução ao Python por Projetos | Comece Aqui) th-cam.com/play/PL5TJqBvpXQv6AEfVymby32MinHdxZA-8J.html
O insertion_sort não ordenou corretamente, confira em 11:13, a diferença entre o intervalo de [34 ... 87] na sua lista.
Ordenou sim: [...34, 39, 40, 42, 76, 87...]. O exemplo que deveria estar previamente ordenado é que possui uma inconsistência [...34, 76, 39...], mas o insertion_sort a corrigiu. Era esta a questão?
@@pgdinamica entendi. Valeu!
Ola, boa tarde, eu tentei entrar em contato pelo Insta mas nao consegui. rsrs
Envie um email para contato@programacaodinamica.com.br
oxi, é igual ao select sort?
Não mesmo. A ideia do selection sort é encontrar o menor (ou maior) valor no vetor inteiro e colocá-lo na primeira posição, e então repetir isso no restante do vetor.