aula 127

Como ordenar um vetor com o algoritmo INSERTION SORT | Ordenação por inserção

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.

insertion sort
Simulação do algoritmo Insertion Sorte para o índice 3 do vetor.

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)
	}
}

Deixe um comentário

19 + dez =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.