A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Ordenação por inserção

Apresentações semelhantes


Apresentação em tema: "Ordenação por inserção"— Transcrição da apresentação:

1 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

2 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.

3 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.

4 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

5 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

6 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

7 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

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

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

10 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

11 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).

12 Referências CORMEN,T.H.; LEISERSON, C.E. RIVEST, R.L and STEIN C. ALGORITMOS - Teoria e prática. Editora Campus 2002.


Carregar ppt "Ordenação por inserção"

Apresentações semelhantes


Anúncios Google