Nas aulas anteriores do nosso Curso de Algoritmos e Lógica de Programação aprendemos como funciona os algoritmos de ordenação BUBBLE SORTE e SELECTION SORT. Nesta aula vamos aprender como ordenar um vetor com o algoritmo INSERTION SORT, Ordenação por inserção.
Como o nome sugere, este algoritmo ordena o vetor inserindo os elementos na posição correta.
A verificação começa a partir do segundo elemento do vetor (i = 1). É feito uma cópia deste elemento para a variável copia. Este segundo elemento, copiado para a variável copia, será comparado com os anteriores (neste caso há apenas 1). Se o anterior for maior, então ele é “puxado” para a direita uma vez, liberando lugar para o elemento copiado.
Na iteração seguinte, quando a variável i assumir o valor 2, o elemento do índice 2, que será copiado, será comparado com o elemento do índice 1, que será “puxado” para a direita se for maior, e com o elemento do índice 0, que também será “puxado” para a direita se for maior, liberando assim lugar para o elemento do índice 2 que foi copiado.
Esse processo irá se repetir até o final do vetor. O último elemento do vetor será comparado com todos os elementos anteriores (ou até encontrar sua posição correta). Os maiores serão “puxados” para a direita, até que a posição correta seja encontrada e ele seja inserido ordenado.
Algoritmo de ordenação Insertion Sort em Portugol
programa { /* * Aula 127: Algoritmo de ordenação Insertion Sort * * Código escrito por Wagner Gaspar * Abril de 2021 */ funcao imprimir(inteiro vet[], inteiro tam){ inteiro i para(i = 0; i < tam; i++) escreva(vet[i], " ") escreva("\n") } funcao inicio() { inteiro vet[25] = {45,5,72,19,28,61,37,49,47,89,66,33,55,57,12,18,19,46,94,99,43,27,29,55,88} inteiro copia, indice, i imprimir(vet, 25) para(i = 1; i < 25; i++){ copia = vet[i] indice = i enquanto(indice > 0 e vet[indice - 1] > copia){ vet[indice] = vet[indice - 1] indice-- } vet[indice] = copia } imprimir(vet, 25) } }