Ordenação por inserção

Slides:



Advertisements
Apresentações semelhantes
LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Advertisements

Algoritmo e Programação
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Python: Recursão Claudio Esperança.
Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo www. decom. ufop
Estruturas de Dados Marcio Gonçalves.
Linguagem de Programação IX Métodos de Ordenação
Pilhas e Filas CONTEÚDO (1) Pilhas (2) Filas.
Algoritmos de Ordenação
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.

Pesquisa em Memória Primária
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
HeapSort Filas de Prioridade – Heap
David Menotti Estruturas de Dados I DECOM – UFOP
Medida do Tempo de Execução de um Programa
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária
David Menotti Estruturas de Dados I DECOM – UFOP
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Classificação (Ordenação) de dados
Algoritmos Escher.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados e Complexidade de Algoritmos
Complexidade de Algoritmos
Instrutor: Nilo Menezes
Apresentação da linguagem Python
Divisão e Conquista Análise de algoritmos UNISUL Ciência da Computação
Listas e algoritmos (em Scratch)
Algoritmos de Ordenação
Insertion Sort.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012.
Algoritmos e Estruturas de Dados II
Listas lineares Denise Guliato Faculdade de Computação – UFU
Aula 01 BCC202 - Estrutura de Dados I Túlio Toffolo
Ordenação em memória primária
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Algorítmos e estrutura de dados III Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
ORDENAÇÃO POR CONTAGEM
Universidade Católica de Pelotas Mestrado em Ciência da Computação
Listas, Filas e Pilhas Katia Guimarães.
Aula 3 Listas, pilhas, filas.
Estruturas de Dados Aula 9: Listas (parte 1)
Ceça Moraes – Introdução à Programação SI1
Algoritmos de Ordenação
Sistemas Operacionais
Árvore Binária de Busca
Definição O processador é o C.I. mais importante do computador. Ele é considerado como o cérebro do computador e funciona como uma UCP – Unidade Central.
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Introdução à complexidade de algoritmos Luiz Gonzaga da Silveira Junior.
Árvores Vermelho-Preto
Complexidade em Tempo de um Algoritmo
Lista Linear Base para outras estruturas
Prof. Hilton Cardoso Marins Junior
Como analisar um algoritmo
Heaps Binomiais Rômulo de Almeida Bruno Mestrando em Ciência da Computação Professora Liliane Salgado Disciplina - Algoritmos.
Métodos de Ordenação.
Prof. Edison Oliveira de Jesus
1 TAD Fila com Prioridade -FCP ATAI. 2 TAD Fila com Prioridade (Priority Queue) TAD Fila com Prioridade armazena uma colecção de elementos com prioridade.
ATAL – Prof. Jorge Figueiredo Ordenação AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação.
Berilhes Borges Garcia Algoritmos Uma ferramenta para resolver um problema de computação bem- especificado (O espírito da computação) Exemplo: ordenação.
ORDENAÇÃO EM TEMPO LINEAR
USP – ICMC – SSC SSC0300 2º Semestre 2015
Campus Pau dos Ferros Disciplina de Algoritmos Prof. Demétrios Coutinho INFORMÁTICA BÁSICA Algoritmos de Ordenação.
Disciplina: Estrutura de dados e Algoritmos Docentes: MSc. Manuel Zunguze.
Algoritmos com matrizes e vetores
Transcrição da apresentação:

Ordenação por inserção UFRPE – Licenciatura em Computação Disciplina: Algoritmos e Estruturas de Dados Prof.: Cristiano Melo e Fagner Coloia Ordenação por inserção INSERTION-SORT

Introdução A ordenação é uma operação fundamental em ciência da computação (vários programas a utilizam como uma sub-rotina intermediária) e como resultado, um grande números de bons algoritmos de ordenação tem sido desenvolvido. O melhor algoritmo para uma determinada aplicação dependerá do número de itens a serem ordenados, da extensão em que os itens já estão ordenados e do dispositivo de armazenamento. A seguir, será apresentado o modelo de algoritmo de ordenação por inserção denominado INSERTION-SORT e suas principais características.

Operação de INSERTION-SORT (Ordenação por inserção) O INSERTION-SORT é um algoritmo eficiente para ordenar um pequeno número de elementos. Basicamente, este algoritmo varre uma lista de elementos da esquerda para a direita e a medida que avança vai deixando os elementos mais a esquerda ordenados. A ordenação por inserção funciona da maneira como muitas pessoas ordenam as cartas de um jogo de baralho. Iniciaremos com a mão esquerda vazia e as cartas viradas com a face virada para baixo. Em seguida, removeremos uma carta de cada vez da mesa, inserindo-a na posição correta da mão esquerda. Para encontrar a posição correta de uma carta, vamos compará-la a cada uma das cartas que já esta na mão, da direita para esquerda. Em cada instante, as cartas seguras na mão esquerda são ordenadas.

1 2 3 4 5 6 Operação de INSERTION-SORT (Ordenação por inserção) (a) Em cada iteração, o retângulo preto contém a chave obtida, que é comparada aos valores contidos nos retângulos sombreados à sua esquerda no teste da linha 5 1 2 3 4 5 6 (a) Setas sombreadas mostram os valores do arranjo deslocados uma posição à direita na linha 6 e setas pretas indicam para onde a chave é deslocada na linha 8

1 2 3 4 5 6 Operação de INSERTION-SORT (Ordenação por inserção) (b) Em cada iteração, o retângulo preto contém a chave obtida, que é comparada aos valores contidos nos retângulos sombreados à sua esquerda no teste da linha 5 1 2 3 4 5 6 (b) Setas sombreadas mostram os valores do arranjo deslocados uma posição à direita na linha 6 e setas pretas indicam para onde a chave é deslocada na linha 8

1 2 3 4 5 6 Operação de INSERTION-SORT (Ordenação por inserção) (c) Em cada iteração, o retângulo preto contém a chave obtida, que é comparada aos valores contidos nos retângulos sombreados à sua esquerda no teste da linha 5 1 2 3 4 5 6 (c) Setas sombreadas mostram os valores do arranjo deslocados uma posição à direita na linha 6 e setas pretas indicam para onde a chave é deslocada na linha 8

1 2 3 4 5 6 Operação de INSERTION-SORT (Ordenação por inserção) (d) Em cada iteração, o retângulo preto contém a chave obtida, que é comparada aos valores contidos nos retângulos sombreados à sua esquerda no teste da linha 5 1 2 3 4 5 6 (d) Setas sombreadas mostram os valores do arranjo deslocados uma posição à direita na linha 6 e setas pretas indicam para onde a chave é deslocada na linha 8

1 2 3 4 5 6 Operação de INSERTION-SORT (Ordenação por inserção) (e) Em cada iteração, o retângulo preto contém a chave obtida, que é comparada aos valores contidos nos retângulos sombreados à sua esquerda no teste da linha 5 1 2 3 4 5 6 (e) Setas sombreadas mostram os valores do arranjo deslocados uma posição à direita na linha 6 e setas pretas indicam para onde a chave é deslocada na linha 8

1 2 3 4 5 6 Operação de INSERTION-SORT (Ordenação por inserção) (f) O arranjo ordenado final 1 2 3 4 5 6 (f)

Operação de INSERTION-SORT (Ordenação por inserção) Implementação em Python def INSERTION_SORT(lista): j=1 for j in range(len(lista)): index=lista[j] i=j-1 while i>=0 and lista[i]>index: lista[i+1]=lista[i] i=i-1 lista[i+1]=index return lista Voltar

Operação de INSERTION-SORT (Ordenação por inserção) O tempo gasto para executar o algoritmo do INSERTION-SORT depende do valor de entrada. Ordenar milhares de números leva bem mais tempo do que ordenar três números. Além disso, o INSERTION-SORT pode levar diferentes quantidades de tempo para ordenar duas seqüências de entrada de mesmo tamanho dependendo do quanto elas já estão ordenadas. O melhor caso para o INSERTION-SORT é quando a lista já está ordenada. Neste caso a comparação no laço interno (linha 5) sempre falhará na primeira comparação e o tempo de execução dependerá apenas do laço externo. O tempo de execução obedecerá uma função linear e a complexidade do algoritmo será de O(n). O pior caso é quando a lista está na ordem inversa. Nesta situação para cada iteração do laço externo, o laço interno executará n-1 vezes, onde n é o valor da variável j no laço externo. Temos que a complexidade de tempo do algoritmo neste caso será de O(n(n-1)) = O(n2-n) = O(n2).

Referências CORMEN,T.H.; LEISERSON, C.E. RIVEST, R.L and STEIN C. ALGORITMOS - Teoria e prática. Editora Campus 2002. http://www2.fundao.pro.br/articles.asp?cod=178