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

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

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

Apresentações semelhantes


Apresentação em tema: "Ordenação por inserção INSERTION-SORT UFRPE – Licenciatura em Computação Disciplina: Algoritmos e Estruturas de Dados Prof.: Cristiano Melo e Fagner Coloia."— Transcrição da apresentação:

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

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 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. Operação de INSERTION-SORT (Ordenação por inserção)

4 (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 5linha 5 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 linha 6linha 8 Operação de INSERTION-SORT (Ordenação por inserção)

5 (b) Operação de INSERTION-SORT (Ordenação por inserção) 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 5linha 5 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 linha 6linha 8

6 (c) Operação de INSERTION-SORT (Ordenação por inserção) 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 5linha 5 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 linha 6linha 8

7 (d) Operação de INSERTION-SORT (Ordenação por inserção) 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 5linha 5 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 linha 6linha 8

8 (e) Operação de INSERTION-SORT (Ordenação por inserção) 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 5linha 5 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 linha 6linha 8

9 (f) O arranjo ordenado final Operação de INSERTION-SORT (Ordenação por inserção)

10 def INSERTION_SORT(lista): 1.j=1 2.for j in range(len(lista)): 3.index=lista[j] 4.i=j-1 5.while i>=0 and lista[i]>index: 6.lista[i+1]=lista[i] 7.i=i-1 8.lista[i+1]=index 9.return lista Implementação em Python Operação de INSERTION-SORT (Ordenação por inserção) Voltar

11 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(n 2 -n) = O(n 2 ). Operação de INSERTION-SORT (Ordenação por inserção)

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


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

Apresentações semelhantes


Anúncios Google