1

Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

Algoritmos e Estruturas de Dados II

Algoritmos de OrdenaçãoProf. Tiago Eugenio de Melo

[email protected]

www.tiagodemelo.info

Page 2: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

2/223

Observações

● As palavras com a fonte Courier indicam as palavras-reservadas da linguagem de programação.

Page 3: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

3/223

Referências

● Algorithms in a Nutshell. George T. Heineman, Gary Pollice, Stanley Selkow. O’Reilly Media, 2009.

● Projetos de Algoritmos – com implementações em Pascal e C. Nivio Ziviani. 2a edição. Thomson, 2005.

Page 4: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

4/223

Algoritmos de Ordenação

Page 5: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

5/223

Introdução

Page 6: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

6/223

Introdução

● Algoritmos de ordenação organizam os elementos de uma lista em uma ordem (ascendente ou descendente).

Page 7: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

7/223

Introdução

● Algoritmos de ordenação organizam os elementos de uma lista em uma ordem (ascendente ou descendente).

● Ordenação é uma das mais importantes categorias de algoritmos da Computação.

Page 8: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

8/223

Introdução

● Algoritmos de ordenação organizam os elementos de uma lista em uma ordem (ascendente ou descendente).

● Ordenação é uma das mais importantes categorias de algoritmos da Computação.

● Frequentemente são usados para diminuir a complexidade de um problema.

Page 9: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

9/223

Introdução

● Algoritmos de ordenação organizam os elementos de uma lista em uma ordem (ascendente ou descendente).

● Ordenação é uma das mais importantes categorias de algoritmos da Computação.

● Frequentemente são usados para diminuir a complexidade de um problema.

● Aplicam-se em problemas de banco de dados ou de recuperação de informação.

Page 10: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

10/223

Classificação dos Algoritmos

Page 11: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

11/223

Classificação dos Algoritmos

● Número de comparações

Page 12: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

12/223

Classificação dos Algoritmos

● Número de comparações● Número de trocas

Page 13: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

13/223

Classificação dos Algoritmos

● Número de comparações● Número de trocas● Localização dos dados

Page 14: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

14/223

Classificação dos Algoritmos

● Número de comparações● Número de trocas● Localização dos dados

– Ordenação interna

Page 15: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

15/223

Classificação dos Algoritmos

● Número de comparações● Número de trocas● Localização dos dados

– Ordenação interna● Todos os dados estão em memória principal (RAM).

Page 16: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

16/223

Classificação dos Algoritmos

● Número de comparações● Número de trocas● Localização dos dados

– Ordenação interna● Todos os dados estão em memória principal (RAM).

– Ordenação externa

Page 17: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

17/223

Classificação dos Algoritmos

● Número de comparações● Número de trocas● Localização dos dados

– Ordenação interna● Todos os dados estão em memória principal (RAM).

– Ordenação externa● Memória principal não cabe todos os dados.

Page 18: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

18/223

Classificação dos Algoritmos

● Número de comparações● Número de trocas● Localização dos dados

– Ordenação interna● Todos os dados estão em memória principal (RAM).

– Ordenação externa● Memória principal não cabe todos os dados.● Dados armazenados em memória secundária (disco).

Page 19: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

19/223

Classificação dos Algoritmos

● Número de comparações● Número de trocas● Localização dos dados

– Ordenação interna● Todos os dados estão em memória principal (RAM).

– Ordenação externa● Memória principal não cabe todos os dados.● Dados armazenados em memória secundária (disco).

● Recursão

Page 20: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

20/223

Classificação dos Algoritmos

Page 21: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

21/223

Classificação dos Algoritmos

● Uso de memória

Page 22: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

22/223

Classificação dos Algoritmos

● Uso de memória– In place: ordena sem usar memória adicional ou

usando uma quantidade constante de memória adicional.

Page 23: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

23/223

Classificação dos Algoritmos

● Uso de memória– In place: ordena sem usar memória adicional ou

usando uma quantidade constante de memória adicional.

– Alguns métodos precisam duplicar os dados.

Page 24: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

24/223

Classificação dos Algoritmos

Page 25: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

25/223

Classificação dos Algoritmos

● Adaptabilidade

Page 26: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

26/223

Classificação dos Algoritmos

● Adaptabilidade– Um método é adaptável quando a sequência de

operações realizadas depende da entrada.

Page 27: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

27/223

Classificação dos Algoritmos

● Adaptabilidade– Um método é adaptável quando a sequência de

operações realizadas depende da entrada.– Um método que sempre realiza as mesmas

operações, independente da entrada, é não adaptável.

Page 28: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

28/223

Classificação dos Algoritmos

Page 29: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

29/223

Classificação dos Algoritmos

● Estabilidade– Método é estável se a ordem relativa dos registros

com a mesma chave não se altera após a ordenação.

Page 30: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

30/223

Classificação dos Algoritmos

● Estabilidade– Método é estável se a ordem relativa dos registros

com a mesma chave não se altera após a ordenação.

Page 31: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

31/223

Algoritmo da Bolha

Page 32: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

32/223

Algoritmo da Bolha

● Também conhecido como Bubble Sort.

Page 33: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

33/223

Algoritmo da Bolha

● Também conhecido como Bubble Sort.● É o método mais simples de ordenação.

Page 34: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

34/223

Algoritmo da Bolha

● Também conhecido como Bubble Sort.● É o método mais simples de ordenação.● Algoritmo

Page 35: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

35/223

Algoritmo da Bolha

● Também conhecido como Bubble Sort.● É o método mais simples de ordenação.● Algoritmo

– Compara elementos adjacentes.

Page 36: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

36/223

Algoritmo da Bolha

● Também conhecido como Bubble Sort.● É o método mais simples de ordenação.● Algoritmo

– Compara elementos adjacentes.– Os elementos são trocados, caso não estejam

ordenados.

Page 37: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

37/223

Algoritmo da Bolha

● Também conhecido como Bubble Sort.● É o método mais simples de ordenação.● Algoritmo

– Compara elementos adjacentes.– Os elementos são trocados, caso não estejam

ordenados.– Processo é repetido até a lista ficar ordenada.

Page 38: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

38/223

Algoritmo da Bolha

Page 39: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

39/223

Algoritmo da Bolha

● Exemplo:

Page 40: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

40/223

Algoritmo da Bolha

● Exemplo:

Page 41: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

41/223

Algoritmo da Bolha

● Exemplo:

● O algoritmo tem complexidade O(n2).

Page 42: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

42/223

Algoritmo da Bolha

Page 43: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

43/223

Algoritmo da Bolha

● Pontos positivos

Page 44: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

44/223

Algoritmo da Bolha

● Pontos positivos– Algoritmo simples.

Page 45: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

45/223

Algoritmo da Bolha

● Pontos positivos– Algoritmo simples.– Algoritmo estável.

Page 46: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

46/223

Algoritmo da Bolha

● Pontos positivos– Algoritmo simples.– Algoritmo estável.

● Pontos negativos

Page 47: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

47/223

Algoritmo da Bolha

● Pontos positivos– Algoritmo simples.– Algoritmo estável.

● Pontos negativos– Não adaptável.

Page 48: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

48/223

Algoritmo da Bolha

● Pontos positivos– Algoritmo simples.– Algoritmo estável.

● Pontos negativos– Não adaptável.– Muitas trocas de elementos durante a ordenação.

Page 49: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

49/223

Algoritmo de Seleção

Page 50: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

50/223

Algoritmo de Seleção

● Também conhecido como Selection Sort.

Page 51: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

51/223

Algoritmo de Seleção

● Também conhecido como Selection Sort.● É um algoritmo in place.

Page 52: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

52/223

Algoritmo de Seleção

● Também conhecido como Selection Sort.● É um algoritmo in place.● Algoritmo:

Page 53: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

53/223

Algoritmo de Seleção

● Também conhecido como Selection Sort.● É um algoritmo in place.● Algoritmo:

– Achar o maior (ou menor) valor da lista.

Page 54: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

54/223

Algoritmo de Seleção

● Também conhecido como Selection Sort.● É um algoritmo in place.● Algoritmo:

– Achar o maior (ou menor) valor da lista.– Trocar esse elemento na posição atual.

Page 55: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

55/223

Algoritmo de Seleção

● Também conhecido como Selection Sort.● É um algoritmo in place.● Algoritmo:

– Achar o maior (ou menor) valor da lista.– Trocar esse elemento na posição atual.– Repetir o processo até a lista ficar ordenada.

Page 56: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

56/223

Algoritmo de Seleção

Page 57: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

57/223

Algoritmo de Seleção

● Exemplo

Page 58: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

58/223

Algoritmo de Seleção

● Exemplo

Page 59: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

59/223

Algoritmo de Seleção

● Exemplo

● O algoritmo tem complexidade O(n2).

Page 60: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

60/223

Algoritmo de Seleção

Page 61: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

61/223

Algoritmo de Seleção

● Pontos positivos

Page 62: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

62/223

Algoritmo de Seleção

● Pontos positivos– Custo linear no tamanho da entrada para o número

de movimentos de elementos.

Page 63: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

63/223

Algoritmo de Seleção

● Pontos positivos– Custo linear no tamanho da entrada para o número

de movimentos de elementos.● Pontos negativos

Page 64: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

64/223

Algoritmo de Seleção

● Pontos positivos– Custo linear no tamanho da entrada para o número

de movimentos de elementos.● Pontos negativos

– Não adaptável.

Page 65: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

65/223

Algoritmo de Seleção

● Pontos positivos– Custo linear no tamanho da entrada para o número

de movimentos de elementos.● Pontos negativos

– Não adaptável.– Não estável.

Page 66: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

66/223

Algoritmo de Inserção

Page 67: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

67/223

Algoritmo de Inserção

● A cada iteração, o algoritmo remove um elemento da lista de entrada e insere esse elemento na posição correta.

Page 68: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

68/223

Algoritmo de Inserção

Page 69: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

69/223

Algoritmo de Inserção

● Exemplo

Page 70: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

70/223

Algoritmo de Inserção

● Exemplo

Page 71: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

71/223

Algoritmo de Inserção

● Exemplo

● O algoritmo tem complexidade O(n2).

Page 72: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

72/223

Algoritmo de Inserção

Page 73: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

73/223

Algoritmo de Inserção

● Características:

Page 74: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

74/223

Algoritmo de Inserção

● Características:– Simples implementação.

Page 75: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

75/223

Algoritmo de Inserção

● Características:– Simples implementação.– A ordenação é realizada in place. Requer apenas

O(1) de espaço extra de memória.

Page 76: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

76/223

Algoritmo de Inserção

● Características:– Simples implementação.– A ordenação é realizada in place. Requer apenas

O(1) de espaço extra de memória.– Estável.

Page 77: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

77/223

Algoritmo de Inserção

● Características:– Simples implementação.– A ordenação é realizada in place. Requer apenas

O(1) de espaço extra de memória.– Estável.– Na prática, é mais eficiente do que o método Bolha

e Seleção.

Page 78: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

78/223

Algoritmo de Inserção

● Características:– Simples implementação.– A ordenação é realizada in place. Requer apenas

O(1) de espaço extra de memória.– Estável.– Na prática, é mais eficiente do que o método Bolha e

Seleção.– Algoritmo usado quando a entrada está praticamente

ordenada ou quando a entrada é pequena.

Page 79: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

79/223

Algoritmo de Inserção

Page 80: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

80/223

Algoritmo de Inserção

● Pontos positivos

Page 81: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

81/223

Algoritmo de Inserção

● Pontos positivos– Adequado para ordenar vetores pequenos.

Page 82: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

82/223

Algoritmo de Inserção

● Pontos positivos– Adequado para ordenar vetores pequenos.– É o método a ser utilizado quando a lista está

quase ordenada.

Page 83: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

83/223

Algoritmo de Inserção

● Pontos positivos– Adequado para ordenar vetores pequenos.– É o método a ser utilizado quando a lista está

quase ordenada.– É um bom método quando se deseja adicionar

poucos elementos a uma lista ordenada (custo linear).

Page 84: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

84/223

Algoritmo de Inserção

● Pontos positivos– Adequado para ordenar vetores pequenos.– É o método a ser utilizado quando a lista está

quase ordenada.– É um bom método quando se deseja adicionar

poucos elementos a uma lista ordenada (custo linear).

– É estável.

Page 85: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

85/223

Algoritmo de Inserção

● Pontos positivos– Adequado para ordenar vetores pequenos.– É o método a ser utilizado quando a lista está quase

ordenada.– É um bom método quando se deseja adicionar poucos

elementos a uma lista ordenada (custo linear).– É estável.

● Pontos negativos

Page 86: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

86/223

Algoritmo de Inserção

● Pontos positivos– Adequado para ordenar vetores pequenos.– É o método a ser utilizado quando a lista está quase

ordenada.– É um bom método quando se deseja adicionar poucos

elementos a uma lista ordenada (custo linear).– É estável.

● Pontos negativos– Número de comparações tem crescimento quadrático.

Page 87: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

87/223

Algoritmo de Inserção

● Pontos positivos– Adequado para ordenar vetores pequenos.– É o método a ser utilizado quando a lista está quase

ordenada.– É um bom método quando se deseja adicionar poucos

elementos a uma lista ordenada (custo linear).– É estável.

● Pontos negativos– Número de comparações tem crescimento quadrático.– Alto custo de movimentação de elementos na lista.

Page 88: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

88/223

Mergesort

Page 89: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

89/223

Mergesort

● Estratégia de divisão e conquista

Page 90: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

90/223

Mergesort

● Estratégia de divisão e conquista● Algoritmo baseado em dois passos:

Page 91: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

91/223

Mergesort

● Estratégia de divisão e conquista● Algoritmo baseado em dois passos:

– Divide a lista de entrada em N sublistas, onde cada sublista tem 1 elemento não ordenado e N é o número de elementos da lista.

Page 92: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

92/223

Mergesort

● Estratégia de divisão e conquista● Algoritmo baseado em dois passos:

– Divide a lista de entrada em N sublistas, onde cada sublista tem 1 elemento não ordenado e N é o número de elementos da lista.

– Repetidamente junta (merge) as sublistas para ir produzindo novas sublistas ordenadas até que todos os elementos sejam agrupados (merge) em uma única lista ordenada.

Page 93: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

93/223

Mergesort

Page 94: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

94/223

Mergesort

● Exemplo

Page 95: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

95/223

Mergesort

● Exemplo

Page 96: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

96/223

Quicksort

Page 97: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

97/223

Quicksort

● É outro algoritmo baseado na estratégia de divisão e conquista.

Page 98: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

98/223

Quicksort

● É outro algoritmo baseado na estratégia de divisão e conquista.

● Apesar dele ser um pouco mais complicado, na maioria das implementações ele é mais eficiente do que o Mergesort e raramente alcança o pior caso de O(n2).

Page 99: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

99/223

Quicksort

Page 100: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

100/223

Quicksort

● Algoritmo

Page 101: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

101/223

Quicksort

● Algoritmo– Seleciona-se um elemento da lista chamado de

pivot.

Page 102: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

102/223

Quicksort

● Algoritmo– Seleciona-se um elemento da lista chamado de

pivot.– Executa-se a operação de partição

Page 103: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

103/223

Quicksort

● Algoritmo– Seleciona-se um elemento da lista chamado de

pivot.– Executa-se a operação de partição

● Os elementos menores que o pivot ficarão a sua esquerda.

Page 104: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

104/223

Quicksort

● Algoritmo– Seleciona-se um elemento da lista chamado de

pivot.– Executa-se a operação de partição

● Os elementos menores que o pivot ficarão a sua esquerda.

● Os elementos maiores que o pivot ficarão a sua direita.

Page 105: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

105/223

Quicksort

● Algoritmo– Seleciona-se um elemento da lista chamado de pivot.– Executa-se a operação de partição

● Os elementos menores que o pivot ficarão a sua esquerda.● Os elementos maiores que o pivot ficarão a sua direita.

– De modo recursivo, aplica-se os passos anteriores separadamente para cada sublista onde o último pivot é o elemento central.

Page 106: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

106/223

Quicksort

● Exemplo

Page 107: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

107/223

Quicksort

● Exemplo

Page 108: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

108/223

ShellSort

Page 109: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

109/223

ShellSort

● Proposto por Donald Shell em 1959.

Page 110: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

110/223

ShellSort

● Proposto por Donald Shell em 1959.● É uma extensão do algoritmo de ordenação por

inserção.

Page 111: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

111/223

ShellSort

● Proposto por Donald Shell em 1959.● É uma extensão do algoritmo de ordenação por

inserção.● Ordenação por inserção só troca elementos

adjacentes para determinar o ponto de inserção.

Page 112: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

112/223

ShellSort

● Proposto por Donald Shell em 1959.● É uma extensão do algoritmo de ordenação por

inserção.● Ordenação por inserção só troca elementos

adjacentes para determinar o ponto de inserção.

● O método ShellSort permite fazer trocas de elementos distantes.

Page 113: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

113/223

ShellSort

Page 114: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

114/223

ShellSort

● Algoritmo

Page 115: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

115/223

ShellSort

● Algoritmo– Os conjuntos de elementos separados de h

posições são ordenados.

Page 116: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

116/223

ShellSort

● Algoritmo– Os conjuntos de elementos separados de h

posições são ordenados.● O elemento na posição x é comparado (e trocado) com o

elemento da posição x-h.

Page 117: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

117/223

ShellSort

● Algoritmo– Os conjuntos de elementos separados de h

posições são ordenados.● O elemento na posição x é comparado (e trocado) com o

elemento da posição x-h.● A lista resultante é composta de h segmentos ordenados

e entrelaçados.

Page 118: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

118/223

ShellSort

● Algoritmo– Os conjuntos de elementos separados de h

posições são ordenados.● O elemento na posição x é comparado (e trocado) com o

elemento da posição x-h.● A lista resultante é composta de h segmentos ordenados

e entrelaçados.

– A lista é dita estar h-ordenada.

Page 119: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

119/223

ShellSort

● Algoritmo– Os conjuntos de elementos separados de h posições

são ordenados.● O elemento na posição x é comparado (e trocado) com o

elemento da posição x-h.● A lista resultante é composta de h segmentos ordenados e

entrelaçados.

– A lista é dita estar h-ordenada.– Quando h = 1 o algoritmo é equivalente ao método

de inserção.

Page 120: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

120/223

ShellSort

● Exemplo:

a1 a2 a3 a4 a5 a6 a7 a8 a9 a0 a11 a12

Entrada 62 83 18 53 07 17 95 86 47 69 25 28

H = 5 17 28 18 47 07 25 83 86 53 69 62 95

H = 3 17 07 18 47 28 25 69 62 53 83 86 95

H = 1 07 17 18 25 28 47 53 62 69 83 86 95

Page 121: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

121/223

ShellSort

Page 122: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

122/223

ShellSort

● Escolha da distância de salto (h)

Page 123: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

123/223

ShellSort

● Escolha da distância de salto (h)– Qualquer sequência terminando com h = 1 garante

a ordenação correta (h = 1 é a ordenação por inserção).

Page 124: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

124/223

ShellSort

● Escolha da distância de salto (h)– Qualquer sequência terminando com h = 1 garante

a ordenação correta (h = 1 é a ordenação por inserção).

– Forte impacto no desempenho do algoritmo.

Page 125: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

125/223

ShellSort

● Escolha da distância de salto (h)– Qualquer sequência terminando com h = 1 garante

a ordenação correta (h = 1 é a ordenação por inserção).

– Forte impacto no desempenho do algoritmo.– Sequência para h:

Page 126: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

126/223

ShellSort

● Escolha da distância de salto (h)– Qualquer sequência terminando com h = 1 garante

a ordenação correta (h = 1 é a ordenação por inserção).

– Forte impacto no desempenho do algoritmo.– Sequência para h:

● h(s) = 1, para s = 1

Page 127: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

127/223

ShellSort

● Escolha da distância de salto (h)– Qualquer sequência terminando com h = 1 garante

a ordenação correta (h = 1 é a ordenação por inserção).

– Forte impacto no desempenho do algoritmo.– Sequência para h:

● h(s) = 1, para s = 1● h(s) = 3h(s-1) + 1, para s > 1

Page 128: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

128/223

ShellSort

● Escolha da distância de salto (h)– Qualquer sequência terminando com h = 1 garante a

ordenação correta (h = 1 é a ordenação por inserção).– Forte impacto no desempenho do algoritmo.– Sequência para h:

● h(s) = 1, para s = 1● h(s) = 3h(s-1) + 1, para s > 1● A sequência corresponde a 1, 4, 13, 40, 121, 364, 1.093…

Page 129: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

129/223

ShellSort

● Escolha da distância de salto (h)– Qualquer sequência terminando com h = 1 garante a

ordenação correta (h = 1 é a ordenação por inserção).– Forte impacto no desempenho do algoritmo.– Sequência para h:

● h(s) = 1, para s = 1● h(s) = 3h(s-1) + 1, para s > 1● A sequência corresponde a 1, 4, 13, 40, 121, 364, 1.093…● Knuth mostrou experimentalmente que essa sequência é difícil

de ser batida por mais de 20% de eficiência.

Page 130: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

130/223

ShellSort

● Escolha da distância de salto (h)– Qualquer sequência terminando com h = 1 garante a

ordenação correta (h = 1 é a ordenação por inserção).– Forte impacto no desempenho do algoritmo.– Sequência para h:

● h(s) = 1, para s = 1● h(s) = 3h(s-1) + 1, para s > 1● A sequência corresponde a 1, 4, 13, 40, 121, 364, 1.093…● Knuth mostrou experimentalmente que essa sequência é difícil de

ser batida por mais de 20% de eficiência.● Outras escolhas são possíveis.

Page 131: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

131/223

ShellSort

Page 132: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

132/223

ShellSort

● Escolha da distância de salto (h)

Page 133: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

133/223

ShellSort

● Escolha da distância de salto (h)– Qualquer sequência terminando com h = 1 garante

a ordenação correta.

Page 134: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

134/223

ShellSort

● Escolha da distância de salto (h)– Qualquer sequência terminando com h = 1 garante

a ordenação correta.● h = 1 é ordenação por inserção.

Page 135: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

135/223

ShellSort

● Escolha da distância de salto (h)– Qualquer sequência terminando com h = 1 garante

a ordenação correta.● h = 1 é ordenação por inserção.

– Forte impacto no desempenho do algoritmo.

Page 136: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

136/223

ShellSort

● Escolha da distância de salto (h)– Qualquer sequência terminando com h = 1 garante

a ordenação correta.● h = 1 é ordenação por inserção.

– Forte impacto no desempenho do algoritmo.– Exemplo de sequência ruim: 1, 2, 4, 8, 16…

Page 137: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

137/223

ShellSort

● Escolha da distância de salto (h)– Qualquer sequência terminando com h = 1 garante

a ordenação correta.● h = 1 é ordenação por inserção.

– Forte impacto no desempenho do algoritmo.– Exemplo de sequência ruim: 1, 2, 4, 8, 16…

● Não compara elementos em posições pares com elementos em posições ímpares até a última iteração.

Page 138: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

138/223

ShellSort

Page 139: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

139/223

ShellSort

● A complexidade do algoritmo ainda não é conhecida.

Page 140: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

140/223

ShellSort

● A complexidade do algoritmo ainda não é conhecida.

● Ninguém ainda foi capaz de encontrar uma fórmula fechada para sua função de complexidade.

Page 141: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

141/223

ShellSort

● A complexidade do algoritmo ainda não é conhecida.

● Ninguém ainda foi capaz de encontrar uma fórmula fechada para sua função de complexidade.

● A sua análise ainda contém alguns problemas matemáticos difíceis. Exemplo: escolher a sequência de incrementos.

Page 142: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

142/223

ShellSort

● A complexidade do algoritmo ainda não é conhecida.

● Ninguém ainda foi capaz de encontrar uma fórmula fechada para sua função de complexidade.

● A sua análise ainda contém alguns problemas matemáticos difíceis. Exemplo: escolher a sequência de incrementos.

● O que se sabe é que cada incremento não deve ser múltiplo do anterior.

Page 143: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

143/223

ShellSort

Page 144: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

144/223

ShellSort

● Conjecturas referentes ao número de comparações para a sequência de Knuth:

Page 145: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

145/223

ShellSort

● Conjecturas referentes ao número de comparações para a sequência de Knuth:– Conjectura 1: C(n) = O(n1,25)

Page 146: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

146/223

ShellSort

● Conjecturas referentes ao número de comparações para a sequência de Knuth:– Conjectura 1: C(n) = O(n1,25)– Conjectura 2: C(n) = O(n (ln n)2)

Page 147: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

147/223

ShellSort

Page 148: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

148/223

ShellSort

● Pontos positivos

Page 149: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

149/223

ShellSort

● Pontos positivos– É uma boa opção para arquivos de tamanhos

moderados.

Page 150: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

150/223

ShellSort

● Pontos positivos– É uma boa opção para arquivos de tamanhos

moderados.– Implementação simples e requer uma quantidade

de código pequena.

Page 151: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

151/223

ShellSort

● Pontos positivos– É uma boa opção para arquivos de tamanhos

moderados.– Implementação simples e requer uma quantidade

de código pequena.● Pontos negativos

Page 152: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

152/223

ShellSort

● Pontos positivos– É uma boa opção para arquivos de tamanhos

moderados.– Implementação simples e requer uma quantidade

de código pequena.● Pontos negativos

– O tempo de execução do algoritmo é sensível à ordem inicial do arquivo.

Page 153: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

153/223

ShellSort

● Pontos positivos– É uma boa opção para arquivos de tamanhos

moderados.– Implementação simples e requer uma quantidade de

código pequena.● Pontos negativos

– O tempo de execução do algoritmo é sensível à ordem inicial do arquivo.

– O método não é estável.

Page 154: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

154/223

Counting Sort

Page 155: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

155/223

Counting Sort

● É um algoritmo de ordenação que não necessita da operação de comparação entre os elementos.

Page 156: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

156/223

Counting Sort

● É um algoritmo de ordenação que não necessita da operação de comparação entre os elementos.

● Por isso, é considerado como algoritmo de ordenação inteira (integer sorting algorithm).

Page 157: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

157/223

Counting Sort

● É um algoritmo de ordenação que não necessita da operação de comparação entre os elementos.

● Por isso, é considerado como algoritmo de ordenação inteira (integer sorting algorithm).

● Pode ser usado para ordenar uma lista de elementos cujos valores estão num intervalo pré-definido [0,k).

Page 158: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

158/223

Counting Sort

● É um algoritmo de ordenação que não necessita da operação de comparação entre os elementos.

● Por isso, é considerado como algoritmo de ordenação inteira (integer sorting algorithm).

● Pode ser usado para ordenar uma lista de elementos cujos valores estão num intervalo pré-definido [0,k).

● É um algoritmo de ordenação estável.

Page 159: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

159/223

Counting Sort

● Exemplo

Page 160: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

160/223

Counting Sort

● Exemplo

Page 161: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

161/223

Counting Sort

Page 162: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

162/223

Counting Sort

● Algoritmo

Page 163: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

163/223

Counting Sort

● Algoritmo– Ordenar uma lista A de tamanho N.

Page 164: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

164/223

Counting Sort

● Algoritmo– Ordenar uma lista A de tamanho N.– Passos:

Page 165: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

165/223

Counting Sort

● Algoritmo– Ordenar uma lista A de tamanho N.– Passos:

● Inicializa-se uma lista Aux[] com 0s, onde o tamanho dessa lista deve ser >= max (A[]).

Page 166: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

166/223

Counting Sort

● Algoritmo– Ordenar uma lista A de tamanho N.– Passos:

● Inicializa-se uma lista Aux[] com 0s, onde o tamanho dessa lista deve ser >= max (A[]).

● Percorra A e armazene a quantidade de ocorrências de cada elemento de A em uma posição apropriada de Aux.

Page 167: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

167/223

Counting Sort

● Algoritmo– Ordenar uma lista A de tamanho N.– Passos:

● Inicializa-se uma lista Aux[] com 0s, onde o tamanho dessa lista deve ser >= max (A[]).

● Percorra A e armazene a quantidade de ocorrências de cada elemento de A em uma posição apropriada de Aux.

● Inicializa-se sortedA[] vazio.

Page 168: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

168/223

Counting Sort

● Algoritmo– Ordenar uma lista A de tamanho N.– Passos:

● Inicializa-se uma lista Aux[] com 0s, onde o tamanho dessa lista deve ser >= max (A[]).

● Percorra A e armazene a quantidade de ocorrências de cada elemento de A em uma posição apropriada de Aux.

● Inicializa-se sortedA[] vazio.● Percorra a lista Aux[ ] e copie i em sortedA para Aux[i] número de vezes, onde 0 <= i <= max(A[]).

Page 169: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

169/223

Counting Sort

● Algoritmo– Ordenar uma lista A de tamanho N.– Passos:

● Inicializa-se uma lista Aux[] com 0s, onde o tamanho dessa lista deve ser >= max (A[]).

● Percorra A e armazene a quantidade de ocorrências de cada elemento de A em uma posição apropriada de Aux.

● Inicializa-se sortedA[] vazio.● Percorra a lista Aux[ ] e copie i em sortedA para Aux[i] número de

vezes, onde 0 <= i <= max(A[]).

– A lista A[ ] somente pode ser ordenada por esse algoritmo se o valor máximo de A é menor do que o tamanho máximo de Aux[].

Page 170: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

170/223

Counting Sort

Page 171: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

171/223

Counting Sort

● Complexidade

Page 172: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

172/223

Counting Sort

● Complexidade– A lista A[] é percorrida no tempo de O(N).

Page 173: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

173/223

Counting Sort

● Complexidade– A lista A[] é percorrida no tempo de O(N).– A lista Aux[] é percorrida no tempo de O(k).

Page 174: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

174/223

Counting Sort

● Complexidade– A lista A[] é percorrida no tempo de O(N).– A lista Aux[] é percorrida no tempo de O(k).– Portanto, o tempo médio é O(N + k).

Page 175: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

175/223

Bucket Sort

Page 176: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

176/223

Bucket Sort

● Também conhecido como bin sort.

Page 177: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

177/223

Bucket Sort

● Também conhecido como bin sort.● Supõe que os elementos da entrada estão

distribuídos.

Page 178: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

178/223

Bucket Sort

● Também conhecido como bin sort.● Supõe que os elementos da entrada estão

distribuídos.● A ideia é dividir os elementos em segmentos de

mesmo tamanho (buckets).

Page 179: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

179/223

Bucket Sort

● Também conhecido como bin sort.● Supõe que os elementos da entrada estão

distribuídos.● A ideia é dividir os elementos em segmentos de

mesmo tamanho (buckets).● Espera-se que o número de elementos seja o

mesmo em todos os buckets (segmentos).

Page 180: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

180/223

Bucket Sort

● Também conhecido como bin sort.● Supõe que os elementos da entrada estão distribuídos.● A ideia é dividir os elementos em segmentos de

mesmo tamanho (buckets).● Espera-se que o número de elementos seja o mesmo

em todos os buckets (segmentos).● Em seguida, os elementos são ordenados por um

método qualquer.

Page 181: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

181/223

Bucket Sort

● Também conhecido como bin sort.● Supõe que os elementos da entrada estão distribuídos.● A ideia é dividir os elementos em segmentos de mesmo

tamanho (buckets).● Espera-se que o número de elementos seja o mesmo

em todos os buckets (segmentos).● Em seguida, os elementos são ordenados por um

método qualquer.● Depois os elementos são concatenados.

Page 182: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

182/223

Bucket Sort

Page 183: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

183/223

Bucket Sort

● Exemplo:

Page 184: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

184/223

Bucket Sort

● Exemplo:

12 7 23 5 8 28 11 26 15

Page 185: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

185/223

Bucket Sort

● Exemplo:

12 7 23 5 8 28 11 26 15

Page 186: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

186/223

Bucket Sort

● Exemplo:

12 7 23 5 8 28 11 26 15

Page 187: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

187/223

Bucket Sort

● Exemplo:

12 7 23 5 8 28 11 26 15

12

Page 188: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

188/223

Bucket Sort

● Exemplo:

12 7 23 5 8 28 11 26 15

7 12

Page 189: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

189/223

Bucket Sort

● Exemplo:

12 7 23 5 8 28 11 26 15

7 12 23

Page 190: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

190/223

Bucket Sort

● Exemplo:

12 7 23 5 8 28 11 26 15

7 5 12 23

Page 191: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

191/223

Bucket Sort

● Exemplo:

12 7 23 5 8 28 11 26 15

7 5 8 12 23

Page 192: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

192/223

Bucket Sort

● Exemplo:

12 7 23 5 8 28 11 26 15

7 5 8 12 23 28

Page 193: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

193/223

Bucket Sort

● Exemplo:

12 7 23 5 8 28 11 26 15

7 5 8 12 11 23 28

Page 194: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

194/223

Bucket Sort

● Exemplo:

12 7 23 5 8 28 11 26 15

7 5 8 12 11 23 28 26

Page 195: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

195/223

Bucket Sort

● Exemplo:

12 7 23 5 8 28 11 26 15

7 5 8 12 11 15 23 28 26

Page 196: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

196/223

Bucket Sort

● Exemplo:

12 7 23 5 8 28 11 26 15

7 5 8 12 11 15 23 28 26

Page 197: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

197/223

Bucket Sort

● Exemplo:

12 7 23 5 8 28 11 26 15

7 5 8 12 11 15 23 28 26

Page 198: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

198/223

Bucket Sort

● Exemplo:

12 7 23 5 8 28 11 26 15

7 5 8 12 11 15 23 28 26

5 7 8

Page 199: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

199/223

Bucket Sort

● Exemplo:

12 7 23 5 8 28 11 26 15

7 5 8 12 11 15 23 28 26

5 7 8 11 12 15

Page 200: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

200/223

Bucket Sort

● Exemplo:

12 7 23 5 8 28 11 26 15

7 5 8 12 11 15 23 28 26

5 7 8 11 12 15 23 26 28

Page 201: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

201/223

Bucket Sort

● Exemplo:

12 7 23 5 8 28 11 26 15

7 5 8 12 11 15 23 28 26

5 7 8 11 12 15 23 26 28

Page 202: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

202/223

Bucket Sort

● Exemplo:

12 7 23 5 8 28 11 26 15

5 7 8 11 12 15 23 26 28

7 5 8 12 11 15 23 28 26

5 7 8 11 12 15 23 26 28

Page 203: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

203/223

Bucket Sort

Page 204: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

204/223

Bucket Sort

● Algoritmo

Page 205: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

205/223

Bucket Sort

● Algoritmo– Inicialize um array de “baldes” inicialmente vazios.

Page 206: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

206/223

Bucket Sort

● Algoritmo– Inicialize um array de “baldes” inicialmente vazios.– Distribua os elementos colocando-os cada um dos

“baldes”.

Page 207: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

207/223

Bucket Sort

● Algoritmo– Inicialize um array de “baldes” inicialmente vazios.– Distribua os elementos colocando-os cada um dos

“baldes”.– Ordene cada balde não-vazio.

Page 208: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

208/223

Bucket Sort

● Algoritmo– Inicialize um array de “baldes” inicialmente vazios.– Distribua os elementos colocando-os cada um dos

“baldes”.– Ordene cada balde não-vazio.– Coloque os elementos dos baldes que não estão

vazios no array original.

Page 209: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

209/223

Bucket Sort

Page 210: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

210/223

Bucket Sort

● Análise

Page 211: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

211/223

Bucket Sort

● Análise– O algoritmo assume que a entrada de dados tem

uma distribuição uniforme.

Page 212: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

212/223

Bucket Sort

● Análise– O algoritmo assume que a entrada de dados tem

uma distribuição uniforme.– A complexidade computacional tem relação com o

número de “baldes”.

Page 213: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

213/223

Bucket Sort

● Análise– O algoritmo assume que a entrada de dados tem

uma distribuição uniforme.– A complexidade computacional tem relação com o

número de “baldes”.– O método pode ser eficiente dependendo da

distribuição dos elementos e da quantidade de buckets.

Page 214: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

214/223

Bucket Sort

● Análise– O algoritmo assume que a entrada de dados tem uma

distribuição uniforme.– A complexidade computacional tem relação com o

número de “baldes”.– O método pode ser eficiente dependendo da

distribuição dos elementos e da quantidade de buckets.– O algoritmo é O(n+k) para o caso médio e O(n2) para o

pior caso.

Page 215: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

215/223

Resumo Comparativo

https://medium.com/@george.seif94/a-tour-of-the-top-5-sorting-algorithms-with-python-code-43ea9aa02889

Page 216: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

216/223

Resumo Comparativo

Page 217: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

217/223

Exercícios

● Considere o código abaixo e responda ao que se pede:– A função MetodoX implementa qual algoritmo de

ordenação? – Qual é a finalidade da Linha 6 do programa?

Page 218: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

218/223

Exercícios

● Considere os seguintes métodos de ordenação: bolha, seleção e inserção. Qual deles executa o menor número de comparações para uma lista de entrada contendo valores idênticos?

● Mostre um exemplo que demonstre que o ShellSort é instável para a sequência de h=1,2.

● Um amigo lhe diz que é capaz de ordenar qualquer sequência de 6 números com no máximo 8 comparações. O seu amigo está falando a verdade? Justifique a sua resposta.

Page 219: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

219/223

Exercícios

● Quantas trocas são realizadas quando executamos o algoritmo de Seleção para ordenar uma lista com N elementos?

● Considere a seguinte afirmação: “O algoritmo counting sort é eficiente se a variação da entrada de dados não é significativamente maior do que o número de objetos que serão ordenados”. A afirmação é verdadeira? Se for, justifique a afirmação e dê um exemplo que confirme a justificativa. Se não for verdadeira, justifique o motivo e dê um exemplo que corrobore com a sua justificativa.

Page 220: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

220/223

Exercícios

Page 221: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

221/223

Exercícios

Page 222: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

222/223

Exercícios

Page 223: Algoritmos de Ordenação - Tiago de Melotiagodemelo.info/wp-content/uploads/2019/08/algoritmos-ordenaca… · Algoritmos de ordenação organizam os elementos de uma lista em uma

223/223

Referências

● Visualização de algoritmos de ordenação– https://www.toptal.com/developers/sorting-algorithms