SlideShare uma empresa Scribd logo
Prof.ª M.ª Elaine Cecília Gatto (Cissa) Algoritmos de Ordenação: Insertion Sort
(2017) Página 1 de 9
INSERTION SORT
Insertion Sort é um algoritmo de ordenação que pode ser aplicado em Arrays e Listas
dinâmicas. O algoritmo percorre o vetor da esquerda para a direita e conforme vai percorrendo,
os elementos mais à esquerda vão ficando ordenados.
1. VETOR DESORDENADO
Suponha o seguinte vetor chamado n:
Índice 0 1 2 3 4
elemento 200 10 0 5 30
posição i i+1 i+2 i+3 i+4
1.1. ORDENANDO DE FORMA CRESCENTE
1.ª Passagem:
i = 1; e = n[1] = 10; j = 0;
0 1 2 3 4
200 10 0 5 30
j e
( j >= 0 ) && ( n [ 0 ] > eleito ) = ( 0 >= 0 ) && ( 200 > 10 ) = V && V = V
Copia o valor de n[0] para n[1]
0 1 2 3 4
200 200 0 5 30
Copia o valor de ELEITO para n[0]
0 1 2 3 4
10 200 0 5 30
j = j – 1 = 0 – 1 = -1
Prof.ª M.ª Elaine Cecília Gatto (Cissa) Algoritmos de Ordenação: Insertion Sort
(2017) Página 2 de 9
2.ª Passagem:
i = 2; e = n[2] = 0; j = 1;
0 1 2 3 4
10 200 0 5 30
j e
( j >= 0 ) && ( n [ 1 ] > eleito ) = ( 1 >= 0 ) && ( 200 > 0 ) = V && V = V
Copia o valor de n[1] para n[2]
0 1 2 3 4
10 200 200 5 30
j = j – 1 = 1 – 1 = 0
i = 2; e = n[2] = 0; j = 0;
0 1 2 3 4
10 200 200 5 30
j
( j >= 0 ) && ( n [ 0 ] > eleito ) = ( 0 >= 0 ) && ( 10 > 0 ) = V && V = V
Copia o valor de n[0] para n[1]
0 1 2 3 4
10 10 200 5 30
Copia o valor de ELEITO para n[0]
0 1 2 3 4
0 10 200 5 30
j = j – 1 = 0 – 1 = -1
3.ª Passagem:
i = 3; e = n[3] = 5; j = 2;
0 1 2 3 4
0 10 200 5 30
j e
( j >= 0 ) && ( n [ 2 ] > eleito ) = ( 2 >= 0 ) && ( 200 > 5 ) = V && V = V
Copia o valor de n[2] para n[3]
0 1 2 3 4
0 10 200 200 30
j = j – 1 = 2 – 1 = 1
Prof.ª M.ª Elaine Cecília Gatto (Cissa) Algoritmos de Ordenação: Insertion Sort
(2017) Página 3 de 9
i = 3; e = n[3] = 5; j = 1;
0 1 2 3 4
0 10 200 200 30
j
( j >= 0 ) && ( n [ 1 ] > eleito ) = ( 1 >= 0 ) && ( 10 > 5 ) = V && V = V
Copia o valor de n[1] para n[2]
0 1 2 3 4
0 10 10 200 30
j = j – 1 = 1 – 1 = 0
i = 3; e = n[3] = 5; j = 0;
0 1 2 3 4
0 10 10 200 30
j
( j >= 0 ) && ( n [ 0 ] > eleito ) = ( 0 >= 0 ) && ( 0 > 5 ) = V && F = F
j = j – 1 = 0 – 1 = -1
Copia o valor de ELEITO para n[1]
0 1 2 3 4
0 5 10 200 30
4.ª Passagem:
i = 4; e = n [4] = 30; j = 3;
0 1 2 3 4
0 5 10 200 30
j e
( j >= 0 ) && ( n [ 3 ] > eleito ) = ( 3 >= 0 ) && ( 200 > 30 ) = V && V = V
Copia o valor de n[3] para n[4]
0 1 2 3 4
0 5 10 200 200
j = j – 1 = 3 – 1 = 2
i = 4; e = n [4] = 30; j = 2;
0 1 2 3 4
0 5 10 200 200
j
( j >= 0 ) && ( n [ 2 ] > eleito ) = ( 2 >= 0 ) && ( 10 > 30 ) = V && F = F
Prof.ª M.ª Elaine Cecília Gatto (Cissa) Algoritmos de Ordenação: Insertion Sort
(2017) Página 4 de 9
j = j – 1 = 2 – 1 = 1
i = 4; e = n [4] = 30; j = 1;
0 1 2 3 4
0 5 10 200 200
j
( j >= 0 ) && ( n [ 1 ] > eleito ) = ( 1 >= 0 ) && ( 5 > 30 ) = V && F = F
j = j – 1 = 1 – 1 = 0
i = 4; e = n [4] = 30; j = 0;
0 1 2 3 4
0 5 10 200 200
j
( j >= 0 ) && ( n [ 0 ] > eleito ) = ( 0 >= 0 ) && ( 0 > 30 ) = V && F = F
j = j – 1 = 0 – 1 = -1
Copia o valor de ELEITO para n[3]
0 1 2 3 4
0 5 10 30 200
1.1.1. CÓDIGO FONTE
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
void imprimir();
int i, j, eleito, numero[5];
int main()
{
setlocale(LC_ALL, "Portuguese");
printf("n--------------------------------------------");
printf("nEXEMPLO INSERTION SORT CRESCENTE");
printf("n--------------------------------------------");
printf("nInicializando o Array");
for(i=0; i<5; i++)
{
numero[i] = 0;
}
imprimir();
printf("n--------------------------------------------");
printf("nInserindo valores no Arrayn");
for(i=0; i<5; i++)
Prof.ª M.ª Elaine Cecília Gatto (Cissa) Algoritmos de Ordenação: Insertion Sort
(2017) Página 5 de 9
{
printf("n|Posição %d |Digite um número: t", i);
scanf("%d%*c",&numero[i]);
}
printf("n--------------------------------------------");
printf("nValores armazenados no array");
imprimir();
printf("n--------------------------------------------");
printf("nOrdenando o Array");
for( i=1; i<5; i++ )
{
eleito = numero[i];
j = i - 1;
while(j>=0 && numero[j] > eleito)
{
numero[j+1] = numero[j];
j = j - 1;
}
numero[j+1] = eleito;
}
printf("n--------------------------------------------");
printf("nValores ordenados");
imprimir();
printf("n--------------------------------------------");
return 0;
}
void imprimir()
{
printf("n--------------------------------------------");
for (i=0; i<5; i++)
{
printf("n|Posicao: %d | Número: %d|", i, numero[i]);
}
}
1.2. ORDENANDO DE FORMA DECRESCENTE
1.ª Passagem:
i = 1; e = n[1] = 10; j = 0;
0 1 2 3 4
200 10 0 5 30
j e
j > = 0  0 > = 0  V
Prof.ª M.ª Elaine Cecília Gatto (Cissa) Algoritmos de Ordenação: Insertion Sort
(2017) Página 6 de 9
j < eleito  200 < 10  F
Não troca
2.ª Passagem:
i = 2; e = n[2] = 0; j = 1;
0 1 2 3 4
200 10 0 5 30
j e
j > = 0  1 > = 0  V
j < eleito  10 < 0  F
Não troca
j = j – 1 = 1 – 1 = 0
i = 2; e = n[2] = 0; j = 0;
0 1 2 3 4
200 10 0 5 30
j
j > = 0  0 > = 0  V
j < eleito  200 < 0  F
Não troca
j = j – 1 = 0 – 1 = -1
3.ª Passagem:
i = 3; e = n[3] = 5; j = 2;
0 1 2 3 4
200 10 0 5 30
j e
j > = 0  2 > = 0  V
j < eleito  0 < 5  V
Copia o valor de n[2] para n[3]
0 1 2 3 4
200 10 0 0 30
j = j – 1 = 2 – 1 = 1
i = 3; e = n[2] = 5; j = 1;
Prof.ª M.ª Elaine Cecília Gatto (Cissa) Algoritmos de Ordenação: Insertion Sort
(2017) Página 7 de 9
0 1 2 3 4
200 10 0 0 30
j
j > = 0  1 > = 0  V
j < eleito  10 < 5  F
j = j – 1 = 1 – 1 = 0
i = 3; e = n[2] = 5; j = 0;
0 1 2 3 4
200 10 0 0 30
j
j > = 0  0 > = 0  V
j < eleito  200 < 5  F
j = j – 1 = 0 – 1 = -1
Copia o valor de ELEITO para n[2]
0 1 2 3 4
200 10 5 0 30
4.ª Passagem:
i = 4; e = n[4] = 30; j = 3;
0 1 2 3 4
200 10 5 0 30
j e
j > = 0  3 > = 0  V
j < eleito  0 < 30  V
Copia o valor de n[3] para n[4]
0 1 2 3 4
200 10 5 0 0
j = j – 1 = 3 – 1 = 2
i = 4; e = n[4] = 30; j = 2;
0 1 2 3 4
200 10 5 0 0
j
j > = 0  2 > = 0  V
j < eleito  5 < 30  V
Copia o valor de n[2] para n[3]
0 1 2 3 4
200 10 5 5 0
j = j – 1 = 2 – 1 = 1
Prof.ª M.ª Elaine Cecília Gatto (Cissa) Algoritmos de Ordenação: Insertion Sort
(2017) Página 8 de 9
i = 4; e = n[4] = 30; j = 1;
0 1 2 3 4
200 10 5 5 0
j
j > = 0  1 > = 0  V
j < eleito  10 < 30  V
Copia o valor de n[1] para n[2]
0 1 2 3 4
200 10 10 5 0
j = j – 1 = 1 – 1 = 0
i = 4; e = n[4] = 30; j = 0;
0 1 2 3 4
200 10 10 5 0
j
j > = 0  0 > = 0  V
j < eleito  200 < 30  F
j = j – 1 = 0 – 1 = -1
Copia o valor de ELEITO para n[1]
0 1 2 3 4
200 30 10 5 0
1.2.1. CÓDIGO FONTE
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
void imprimir();
int i, j, eleito, numero[5];
int main()
{
setlocale(LC_ALL, "Portuguese");
printf("n--------------------------------------------");
printf("nEXEMPLO INSERTION SORT DECRESCENTE");
printf("n--------------------------------------------");
printf("nInicializando o Array");
for(i=0; i<5; i++)
{
numero[i] = 0;
}
imprimir();
Prof.ª M.ª Elaine Cecília Gatto (Cissa) Algoritmos de Ordenação: Insertion Sort
(2017) Página 9 de 9
printf("n--------------------------------------------");
printf("nInserindo valores no Arrayn");
for(i=0; i<5; i++)
{
printf("n|Posição %d |Digite um número: t", i);
scanf("%d%*c",&numero[i]);
}
printf("n--------------------------------------------");
printf("nValores armazenados no array");
imprimir();
printf("n--------------------------------------------");
printf("nOrdenando o Array");
for( i=1; i<5; i++ )
{
eleito = numero[i];
j = i - 1;
while(j>=0 && numero[j] < eleito)
{
numero[j+1] = numero[j];
j = j - 1;
}
numero[j+1] = eleito;
}
printf("n--------------------------------------------");
printf("nValores ordenados");
imprimir();
printf("n--------------------------------------------");
return 0;
}
void imprimir()
{
printf("n--------------------------------------------");
for (i=0; i<5; i++)
{
printf("n|Posicao: %d | Número: %d|", i, numero[i]);
}
}

Mais conteúdo relacionado

Mais procurados

Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
Arthur Emanuel
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL Básico
Igor Alves
 
Matrizes
MatrizesMatrizes
[Curso Java Basico - Orientacao a Objetos] Aula 35: Recursividade
[Curso Java Basico - Orientacao a Objetos] Aula 35: Recursividade[Curso Java Basico - Orientacao a Objetos] Aula 35: Recursividade
[Curso Java Basico - Orientacao a Objetos] Aula 35: Recursividade
Loiane Groner
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STL
Marcos Castro
 
Aula 6 curso básico cep fusco2
Aula 6 curso básico cep fusco2Aula 6 curso básico cep fusco2
Aula 6 curso básico cep fusco2
José Paulo Alves Fusco
 
Ordenação
OrdenaçãoOrdenação
Ordenação
Sérgio Souza Costa
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)
Armando Daniel
 
HeapSort
HeapSortHeapSort
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceções
Alvaro Oliveira
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java
Mario Jorge Pereira
 
Árvores: Conceitos e binárias
Árvores:  Conceitos e bináriasÁrvores:  Conceitos e binárias
Árvores: Conceitos e binárias
Sérgio Souza Costa
 
Latex - Minicurso Básico
Latex - Minicurso BásicoLatex - Minicurso Básico
Latex - Minicurso Básico
Wellington Soares
 
6 estruturas de dados heterogêneas
6  estruturas de dados heterogêneas6  estruturas de dados heterogêneas
6 estruturas de dados heterogêneas
Emília Alves Nogueira
 
Banco de Dados MySQL + NetBeans Java + Interface Grafica
Banco de Dados MySQL + NetBeans Java + Interface GraficaBanco de Dados MySQL + NetBeans Java + Interface Grafica
Banco de Dados MySQL + NetBeans Java + Interface Grafica
Divani Barbosa
 
Aula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem CAula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem C
profjr
 
Modulo 4-matematica
Modulo 4-matematicaModulo 4-matematica
Modulo 4-matematica
Dionisio Ussaca
 
Alvenaria
AlvenariaAlvenaria
Alvenaria
Ligidanor Ávila
 
Algoritmo Shell Sort
Algoritmo Shell SortAlgoritmo Shell Sort
Algoritmo Shell Sort
Gabriel Albuquerque
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
Adriano Teixeira de Souza
 

Mais procurados (20)

Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL Básico
 
Matrizes
MatrizesMatrizes
Matrizes
 
[Curso Java Basico - Orientacao a Objetos] Aula 35: Recursividade
[Curso Java Basico - Orientacao a Objetos] Aula 35: Recursividade[Curso Java Basico - Orientacao a Objetos] Aula 35: Recursividade
[Curso Java Basico - Orientacao a Objetos] Aula 35: Recursividade
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STL
 
Aula 6 curso básico cep fusco2
Aula 6 curso básico cep fusco2Aula 6 curso básico cep fusco2
Aula 6 curso básico cep fusco2
 
Ordenação
OrdenaçãoOrdenação
Ordenação
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)
 
HeapSort
HeapSortHeapSort
HeapSort
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceções
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java
 
Árvores: Conceitos e binárias
Árvores:  Conceitos e bináriasÁrvores:  Conceitos e binárias
Árvores: Conceitos e binárias
 
Latex - Minicurso Básico
Latex - Minicurso BásicoLatex - Minicurso Básico
Latex - Minicurso Básico
 
6 estruturas de dados heterogêneas
6  estruturas de dados heterogêneas6  estruturas de dados heterogêneas
6 estruturas de dados heterogêneas
 
Banco de Dados MySQL + NetBeans Java + Interface Grafica
Banco de Dados MySQL + NetBeans Java + Interface GraficaBanco de Dados MySQL + NetBeans Java + Interface Grafica
Banco de Dados MySQL + NetBeans Java + Interface Grafica
 
Aula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem CAula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem C
 
Modulo 4-matematica
Modulo 4-matematicaModulo 4-matematica
Modulo 4-matematica
 
Alvenaria
AlvenariaAlvenaria
Alvenaria
 
Algoritmo Shell Sort
Algoritmo Shell SortAlgoritmo Shell Sort
Algoritmo Shell Sort
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 

Semelhante a Insertion Sort

Exercícios complementares
Exercícios complementaresExercícios complementares
Exercícios complementares
Marcos Mendes
 
AULA 10 - 6º ANO - CEM
AULA 10 - 6º ANO - CEMAULA 10 - 6º ANO - CEM
AULA 10 - 6º ANO - CEM
Prof. Materaldo
 
Imlweb ufmg
Imlweb ufmgImlweb ufmg
3 - Vetores - Tratamento algébrico GA.pdf
3 - Vetores - Tratamento algébrico GA.pdf3 - Vetores - Tratamento algébrico GA.pdf
3 - Vetores - Tratamento algébrico GA.pdf
IndiaAndreiaCostaSiq
 
Números inteiros diversos exercícios 2 2014 gabarito
Números inteiros   diversos exercícios 2 2014 gabaritoNúmeros inteiros   diversos exercícios 2 2014 gabarito
Números inteiros diversos exercícios 2 2014 gabarito
CIEP 456 - E.M. Milcah de Sousa
 
Números inteiros relativos multiplicação e divisão
Números inteiros relativos multiplicação e divisãoNúmeros inteiros relativos multiplicação e divisão
Números inteiros relativos multiplicação e divisão
PatriciaLavos
 
Sequencias e mf 2016
Sequencias e mf 2016Sequencias e mf 2016
Sequencias e mf 2016
ProfessoraIve
 
Quiz - Operações fundamentais com números inteiros - 7º ano - volume 1 - capí...
Quiz - Operações fundamentais com números inteiros - 7º ano - volume 1 - capí...Quiz - Operações fundamentais com números inteiros - 7º ano - volume 1 - capí...
Quiz - Operações fundamentais com números inteiros - 7º ano - volume 1 - capí...
Prof. Materaldo
 
Cópia de Matemática Fundamental Segundo Grau - Resolução de Exercícios.pdf
Cópia de Matemática Fundamental Segundo Grau - Resolução de Exercícios.pdfCópia de Matemática Fundamental Segundo Grau - Resolução de Exercícios.pdf
Cópia de Matemática Fundamental Segundo Grau - Resolução de Exercícios.pdf
Autonoma
 
Expressoes numericas
Expressoes numericasExpressoes numericas
Expressoes numericas
Marcelo Auler
 
Introdução ao MATLAB
Introdução ao MATLABIntrodução ao MATLAB
Introdução ao MATLAB
CaioTelefonica
 
Amem
AmemAmem
Lista 01 gabarito
Lista 01   gabaritoLista 01   gabarito
Lista 01 gabarito
Rafael andrade
 
3º teste 10_resolucao.pdf
3º teste 10_resolucao.pdf3º teste 10_resolucao.pdf
3º teste 10_resolucao.pdf
Raquel129278
 
9° ano equações do 2° grau incompletas
9° ano equações do 2° grau incompletas9° ano equações do 2° grau incompletas
9° ano equações do 2° grau incompletas
Hélio Rocha
 
mma10_3_resol.pdf
mma10_3_resol.pdfmma10_3_resol.pdf
mma10_3_resol.pdf
Iola Cristina Gonçalves
 
Expressoes numericas
Expressoes numericasExpressoes numericas
Expressoes numericas
Cristiane Santana
 
Lista cal amostra
Lista cal amostraLista cal amostra
Lista cal amostra
Rebecca Morena
 
Revisão de geometria analitica
Revisão de geometria analiticaRevisão de geometria analitica
Revisão de geometria analitica
Renivan Freitas
 
Expressões numéricas masis completas
Expressões numéricas masis completasExpressões numéricas masis completas
Expressões numéricas masis completas
Erivaldo Ribeiro
 

Semelhante a Insertion Sort (20)

Exercícios complementares
Exercícios complementaresExercícios complementares
Exercícios complementares
 
AULA 10 - 6º ANO - CEM
AULA 10 - 6º ANO - CEMAULA 10 - 6º ANO - CEM
AULA 10 - 6º ANO - CEM
 
Imlweb ufmg
Imlweb ufmgImlweb ufmg
Imlweb ufmg
 
3 - Vetores - Tratamento algébrico GA.pdf
3 - Vetores - Tratamento algébrico GA.pdf3 - Vetores - Tratamento algébrico GA.pdf
3 - Vetores - Tratamento algébrico GA.pdf
 
Números inteiros diversos exercícios 2 2014 gabarito
Números inteiros   diversos exercícios 2 2014 gabaritoNúmeros inteiros   diversos exercícios 2 2014 gabarito
Números inteiros diversos exercícios 2 2014 gabarito
 
Números inteiros relativos multiplicação e divisão
Números inteiros relativos multiplicação e divisãoNúmeros inteiros relativos multiplicação e divisão
Números inteiros relativos multiplicação e divisão
 
Sequencias e mf 2016
Sequencias e mf 2016Sequencias e mf 2016
Sequencias e mf 2016
 
Quiz - Operações fundamentais com números inteiros - 7º ano - volume 1 - capí...
Quiz - Operações fundamentais com números inteiros - 7º ano - volume 1 - capí...Quiz - Operações fundamentais com números inteiros - 7º ano - volume 1 - capí...
Quiz - Operações fundamentais com números inteiros - 7º ano - volume 1 - capí...
 
Cópia de Matemática Fundamental Segundo Grau - Resolução de Exercícios.pdf
Cópia de Matemática Fundamental Segundo Grau - Resolução de Exercícios.pdfCópia de Matemática Fundamental Segundo Grau - Resolução de Exercícios.pdf
Cópia de Matemática Fundamental Segundo Grau - Resolução de Exercícios.pdf
 
Expressoes numericas
Expressoes numericasExpressoes numericas
Expressoes numericas
 
Introdução ao MATLAB
Introdução ao MATLABIntrodução ao MATLAB
Introdução ao MATLAB
 
Amem
AmemAmem
Amem
 
Lista 01 gabarito
Lista 01   gabaritoLista 01   gabarito
Lista 01 gabarito
 
3º teste 10_resolucao.pdf
3º teste 10_resolucao.pdf3º teste 10_resolucao.pdf
3º teste 10_resolucao.pdf
 
9° ano equações do 2° grau incompletas
9° ano equações do 2° grau incompletas9° ano equações do 2° grau incompletas
9° ano equações do 2° grau incompletas
 
mma10_3_resol.pdf
mma10_3_resol.pdfmma10_3_resol.pdf
mma10_3_resol.pdf
 
Expressoes numericas
Expressoes numericasExpressoes numericas
Expressoes numericas
 
Lista cal amostra
Lista cal amostraLista cal amostra
Lista cal amostra
 
Revisão de geometria analitica
Revisão de geometria analiticaRevisão de geometria analitica
Revisão de geometria analitica
 
Expressões numéricas masis completas
Expressões numéricas masis completasExpressões numéricas masis completas
Expressões numéricas masis completas
 

Mais de Elaine Cecília Gatto

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etaria
Elaine Cecília Gatto
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à Medicina
Elaine Cecília Gatto
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Elaine Cecília Gatto
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPC
Elaine Cecília Gatto
 
entrevista r7.pdf
entrevista r7.pdfentrevista r7.pdf
entrevista r7.pdf
Elaine Cecília Gatto
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptx
Elaine Cecília Gatto
 
Empoderamento Feminino
Empoderamento FemininoEmpoderamento Feminino
Empoderamento Feminino
Elaine Cecília Gatto
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Elaine Cecília Gatto
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCar
Elaine Cecília Gatto
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de Correlações
Elaine Cecília Gatto
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
Elaine Cecília Gatto
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label Classification
Elaine Cecília Gatto
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Elaine Cecília Gatto
 
Curtinhas de sábado.pdf
Curtinhas de sábado.pdfCurtinhas de sábado.pdf
Curtinhas de sábado.pdf
Elaine Cecília Gatto
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Elaine Cecília Gatto
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
Elaine Cecília Gatto
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamento
Elaine Cecília Gatto
 
Cheat sheet Mips 32 bits
Cheat sheet Mips 32 bitsCheat sheet Mips 32 bits
Cheat sheet Mips 32 bits
Elaine Cecília Gatto
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Elaine Cecília Gatto
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcação
Elaine Cecília Gatto
 

Mais de Elaine Cecília Gatto (20)

A influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etariaA influência da Tecnologia em cada faixa etaria
A influência da Tecnologia em cada faixa etaria
 
Inteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à MedicinaInteligência Artificial Aplicada à Medicina
Inteligência Artificial Aplicada à Medicina
 
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
Além do Aprendizado Local e Global: Particionando o espaço de classes em prob...
 
Apresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPCApresentação da minha tese de doutorado no EPPC
Apresentação da minha tese de doutorado no EPPC
 
entrevista r7.pdf
entrevista r7.pdfentrevista r7.pdf
entrevista r7.pdf
 
Como a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptxComo a pesquisa científica impacta o mundo real.pptx
Como a pesquisa científica impacta o mundo real.pptx
 
Empoderamento Feminino
Empoderamento FemininoEmpoderamento Feminino
Empoderamento Feminino
 
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...Explorando correlações entre rótulos para o particionamento do espaço de rótu...
Explorando correlações entre rótulos para o particionamento do espaço de rótu...
 
Community Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCarCommunity Detection for Multi-Label Classification - Seminários UFSCar
Community Detection for Multi-Label Classification - Seminários UFSCar
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de Correlações
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Community Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label ClassificationCommunity Detection Method for Multi-Label Classification
Community Detection Method for Multi-Label Classification
 
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdfMulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
Mulheres na Campus Party assumir o feminismo ou não – Blogueiras Feministas.pdf
 
Curtinhas de sábado.pdf
Curtinhas de sábado.pdfCurtinhas de sábado.pdf
Curtinhas de sábado.pdf
 
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
Explorando Correlações entre Rótulos usando Métodos de Detecção de Comu...
 
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
EXPLORANDO CORRELAÇÕES PARA O PARTICIONAMENTO DO ESPAÇO DE RÓTULOS EM PROBLEM...
 
Pipeline desdobramento escalonamento
Pipeline desdobramento escalonamentoPipeline desdobramento escalonamento
Pipeline desdobramento escalonamento
 
Cheat sheet Mips 32 bits
Cheat sheet Mips 32 bitsCheat sheet Mips 32 bits
Cheat sheet Mips 32 bits
 
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bitsResumo das Instruções de Desvio Incondicionais MIPS 32 bits
Resumo das Instruções de Desvio Incondicionais MIPS 32 bits
 
Como descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcaçãoComo descobrir e classificar coisas usando machine learning sem compilcação
Como descobrir e classificar coisas usando machine learning sem compilcação
 

Insertion Sort

  • 1. Prof.ª M.ª Elaine Cecília Gatto (Cissa) Algoritmos de Ordenação: Insertion Sort (2017) Página 1 de 9 INSERTION SORT Insertion Sort é um algoritmo de ordenação que pode ser aplicado em Arrays e Listas dinâmicas. O algoritmo percorre o vetor da esquerda para a direita e conforme vai percorrendo, os elementos mais à esquerda vão ficando ordenados. 1. VETOR DESORDENADO Suponha o seguinte vetor chamado n: Índice 0 1 2 3 4 elemento 200 10 0 5 30 posição i i+1 i+2 i+3 i+4 1.1. ORDENANDO DE FORMA CRESCENTE 1.ª Passagem: i = 1; e = n[1] = 10; j = 0; 0 1 2 3 4 200 10 0 5 30 j e ( j >= 0 ) && ( n [ 0 ] > eleito ) = ( 0 >= 0 ) && ( 200 > 10 ) = V && V = V Copia o valor de n[0] para n[1] 0 1 2 3 4 200 200 0 5 30 Copia o valor de ELEITO para n[0] 0 1 2 3 4 10 200 0 5 30 j = j – 1 = 0 – 1 = -1
  • 2. Prof.ª M.ª Elaine Cecília Gatto (Cissa) Algoritmos de Ordenação: Insertion Sort (2017) Página 2 de 9 2.ª Passagem: i = 2; e = n[2] = 0; j = 1; 0 1 2 3 4 10 200 0 5 30 j e ( j >= 0 ) && ( n [ 1 ] > eleito ) = ( 1 >= 0 ) && ( 200 > 0 ) = V && V = V Copia o valor de n[1] para n[2] 0 1 2 3 4 10 200 200 5 30 j = j – 1 = 1 – 1 = 0 i = 2; e = n[2] = 0; j = 0; 0 1 2 3 4 10 200 200 5 30 j ( j >= 0 ) && ( n [ 0 ] > eleito ) = ( 0 >= 0 ) && ( 10 > 0 ) = V && V = V Copia o valor de n[0] para n[1] 0 1 2 3 4 10 10 200 5 30 Copia o valor de ELEITO para n[0] 0 1 2 3 4 0 10 200 5 30 j = j – 1 = 0 – 1 = -1 3.ª Passagem: i = 3; e = n[3] = 5; j = 2; 0 1 2 3 4 0 10 200 5 30 j e ( j >= 0 ) && ( n [ 2 ] > eleito ) = ( 2 >= 0 ) && ( 200 > 5 ) = V && V = V Copia o valor de n[2] para n[3] 0 1 2 3 4 0 10 200 200 30 j = j – 1 = 2 – 1 = 1
  • 3. Prof.ª M.ª Elaine Cecília Gatto (Cissa) Algoritmos de Ordenação: Insertion Sort (2017) Página 3 de 9 i = 3; e = n[3] = 5; j = 1; 0 1 2 3 4 0 10 200 200 30 j ( j >= 0 ) && ( n [ 1 ] > eleito ) = ( 1 >= 0 ) && ( 10 > 5 ) = V && V = V Copia o valor de n[1] para n[2] 0 1 2 3 4 0 10 10 200 30 j = j – 1 = 1 – 1 = 0 i = 3; e = n[3] = 5; j = 0; 0 1 2 3 4 0 10 10 200 30 j ( j >= 0 ) && ( n [ 0 ] > eleito ) = ( 0 >= 0 ) && ( 0 > 5 ) = V && F = F j = j – 1 = 0 – 1 = -1 Copia o valor de ELEITO para n[1] 0 1 2 3 4 0 5 10 200 30 4.ª Passagem: i = 4; e = n [4] = 30; j = 3; 0 1 2 3 4 0 5 10 200 30 j e ( j >= 0 ) && ( n [ 3 ] > eleito ) = ( 3 >= 0 ) && ( 200 > 30 ) = V && V = V Copia o valor de n[3] para n[4] 0 1 2 3 4 0 5 10 200 200 j = j – 1 = 3 – 1 = 2 i = 4; e = n [4] = 30; j = 2; 0 1 2 3 4 0 5 10 200 200 j ( j >= 0 ) && ( n [ 2 ] > eleito ) = ( 2 >= 0 ) && ( 10 > 30 ) = V && F = F
  • 4. Prof.ª M.ª Elaine Cecília Gatto (Cissa) Algoritmos de Ordenação: Insertion Sort (2017) Página 4 de 9 j = j – 1 = 2 – 1 = 1 i = 4; e = n [4] = 30; j = 1; 0 1 2 3 4 0 5 10 200 200 j ( j >= 0 ) && ( n [ 1 ] > eleito ) = ( 1 >= 0 ) && ( 5 > 30 ) = V && F = F j = j – 1 = 1 – 1 = 0 i = 4; e = n [4] = 30; j = 0; 0 1 2 3 4 0 5 10 200 200 j ( j >= 0 ) && ( n [ 0 ] > eleito ) = ( 0 >= 0 ) && ( 0 > 30 ) = V && F = F j = j – 1 = 0 – 1 = -1 Copia o valor de ELEITO para n[3] 0 1 2 3 4 0 5 10 30 200 1.1.1. CÓDIGO FONTE #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <string.h> void imprimir(); int i, j, eleito, numero[5]; int main() { setlocale(LC_ALL, "Portuguese"); printf("n--------------------------------------------"); printf("nEXEMPLO INSERTION SORT CRESCENTE"); printf("n--------------------------------------------"); printf("nInicializando o Array"); for(i=0; i<5; i++) { numero[i] = 0; } imprimir(); printf("n--------------------------------------------"); printf("nInserindo valores no Arrayn"); for(i=0; i<5; i++)
  • 5. Prof.ª M.ª Elaine Cecília Gatto (Cissa) Algoritmos de Ordenação: Insertion Sort (2017) Página 5 de 9 { printf("n|Posição %d |Digite um número: t", i); scanf("%d%*c",&numero[i]); } printf("n--------------------------------------------"); printf("nValores armazenados no array"); imprimir(); printf("n--------------------------------------------"); printf("nOrdenando o Array"); for( i=1; i<5; i++ ) { eleito = numero[i]; j = i - 1; while(j>=0 && numero[j] > eleito) { numero[j+1] = numero[j]; j = j - 1; } numero[j+1] = eleito; } printf("n--------------------------------------------"); printf("nValores ordenados"); imprimir(); printf("n--------------------------------------------"); return 0; } void imprimir() { printf("n--------------------------------------------"); for (i=0; i<5; i++) { printf("n|Posicao: %d | Número: %d|", i, numero[i]); } } 1.2. ORDENANDO DE FORMA DECRESCENTE 1.ª Passagem: i = 1; e = n[1] = 10; j = 0; 0 1 2 3 4 200 10 0 5 30 j e j > = 0  0 > = 0  V
  • 6. Prof.ª M.ª Elaine Cecília Gatto (Cissa) Algoritmos de Ordenação: Insertion Sort (2017) Página 6 de 9 j < eleito  200 < 10  F Não troca 2.ª Passagem: i = 2; e = n[2] = 0; j = 1; 0 1 2 3 4 200 10 0 5 30 j e j > = 0  1 > = 0  V j < eleito  10 < 0  F Não troca j = j – 1 = 1 – 1 = 0 i = 2; e = n[2] = 0; j = 0; 0 1 2 3 4 200 10 0 5 30 j j > = 0  0 > = 0  V j < eleito  200 < 0  F Não troca j = j – 1 = 0 – 1 = -1 3.ª Passagem: i = 3; e = n[3] = 5; j = 2; 0 1 2 3 4 200 10 0 5 30 j e j > = 0  2 > = 0  V j < eleito  0 < 5  V Copia o valor de n[2] para n[3] 0 1 2 3 4 200 10 0 0 30 j = j – 1 = 2 – 1 = 1 i = 3; e = n[2] = 5; j = 1;
  • 7. Prof.ª M.ª Elaine Cecília Gatto (Cissa) Algoritmos de Ordenação: Insertion Sort (2017) Página 7 de 9 0 1 2 3 4 200 10 0 0 30 j j > = 0  1 > = 0  V j < eleito  10 < 5  F j = j – 1 = 1 – 1 = 0 i = 3; e = n[2] = 5; j = 0; 0 1 2 3 4 200 10 0 0 30 j j > = 0  0 > = 0  V j < eleito  200 < 5  F j = j – 1 = 0 – 1 = -1 Copia o valor de ELEITO para n[2] 0 1 2 3 4 200 10 5 0 30 4.ª Passagem: i = 4; e = n[4] = 30; j = 3; 0 1 2 3 4 200 10 5 0 30 j e j > = 0  3 > = 0  V j < eleito  0 < 30  V Copia o valor de n[3] para n[4] 0 1 2 3 4 200 10 5 0 0 j = j – 1 = 3 – 1 = 2 i = 4; e = n[4] = 30; j = 2; 0 1 2 3 4 200 10 5 0 0 j j > = 0  2 > = 0  V j < eleito  5 < 30  V Copia o valor de n[2] para n[3] 0 1 2 3 4 200 10 5 5 0 j = j – 1 = 2 – 1 = 1
  • 8. Prof.ª M.ª Elaine Cecília Gatto (Cissa) Algoritmos de Ordenação: Insertion Sort (2017) Página 8 de 9 i = 4; e = n[4] = 30; j = 1; 0 1 2 3 4 200 10 5 5 0 j j > = 0  1 > = 0  V j < eleito  10 < 30  V Copia o valor de n[1] para n[2] 0 1 2 3 4 200 10 10 5 0 j = j – 1 = 1 – 1 = 0 i = 4; e = n[4] = 30; j = 0; 0 1 2 3 4 200 10 10 5 0 j j > = 0  0 > = 0  V j < eleito  200 < 30  F j = j – 1 = 0 – 1 = -1 Copia o valor de ELEITO para n[1] 0 1 2 3 4 200 30 10 5 0 1.2.1. CÓDIGO FONTE #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <string.h> void imprimir(); int i, j, eleito, numero[5]; int main() { setlocale(LC_ALL, "Portuguese"); printf("n--------------------------------------------"); printf("nEXEMPLO INSERTION SORT DECRESCENTE"); printf("n--------------------------------------------"); printf("nInicializando o Array"); for(i=0; i<5; i++) { numero[i] = 0; } imprimir();
  • 9. Prof.ª M.ª Elaine Cecília Gatto (Cissa) Algoritmos de Ordenação: Insertion Sort (2017) Página 9 de 9 printf("n--------------------------------------------"); printf("nInserindo valores no Arrayn"); for(i=0; i<5; i++) { printf("n|Posição %d |Digite um número: t", i); scanf("%d%*c",&numero[i]); } printf("n--------------------------------------------"); printf("nValores armazenados no array"); imprimir(); printf("n--------------------------------------------"); printf("nOrdenando o Array"); for( i=1; i<5; i++ ) { eleito = numero[i]; j = i - 1; while(j>=0 && numero[j] < eleito) { numero[j+1] = numero[j]; j = j - 1; } numero[j+1] = eleito; } printf("n--------------------------------------------"); printf("nValores ordenados"); imprimir(); printf("n--------------------------------------------"); return 0; } void imprimir() { printf("n--------------------------------------------"); for (i=0; i<5; i++) { printf("n|Posicao: %d | Número: %d|", i, numero[i]); } }