![Page 1: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/1.jpg)
1
Aula 17:- Métodos simples de ordenação
MCTA028 – Programação Estruturada
Prof. Jesús P. Mena-Chalco
3Q-2017
![Page 2: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/2.jpg)
2
Algoritmos para ordenar elementos
Baseado em comparações:Bogo sort
Selection sort
Insertion sort
Bubble sort
Mergesort
Quicksort
Heapsort
Ordenação em tempo linear:Radix sort
Ordenação de primeiros elementos (seleção parcial):Partial Quicksort
![Page 3: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/3.jpg)
3
(1)Bogo sort Miracle sort Monkey sortStupid sort
![Page 4: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/4.jpg)
4
Número de comparações T(n):- No melhor caso: T(n) = n-1- No pior caso: T(n) = ?
![Page 5: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/5.jpg)
5
(2)Selection Sort:Algoritmo de ordenação por seleção
![Page 6: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/6.jpg)
6
Selection Sort
Animação: https://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html
![Page 7: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/7.jpg)
7
Selection Sort
Complexidade computacional: No pior caso?
![Page 8: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/8.jpg)
8
Selection Sort
Quanto tempo o algoritmo consome para fazer o serviço?(A complexidade computacional é proporcional ao número de comparações v[iMin]>v[j])
![Page 9: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/9.jpg)
9
Selection Sort
Quanto tempo o algoritmo consome para fazer o serviço?(A complexidade computacional é proporcional ao número de comparações v[iMin]>v[j])
9 8 7 6 5 4 3 2 1
1 8 7 6 5 4 3 2 9
1 iteração n-1
2 iteração n-2
3 iteração n-3
…
n-1iteração 1
![Page 10: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/10.jpg)
10
Selection Sort
1 iteração n-1
2 iteração n-2
3 iteração n-3
…
n-1iteração 1
Tempo = (n–1)(n)/2
Tempo = n²/2 – n/2
Se o vetor tiver n=10,000 elementos, o número de comparações (tempo) será proporcional a: 49,995,000.
Se o computador fizer 1000 comparações por segundo, o tempo gasto será de: 49995 segundos = 832.25 min = 13.88 horas
![Page 11: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/11.jpg)
11
Selection Sort: Eficiente para quais sequências?
Vetor Crescente Vetor Parcialmente Crescente
Vetor Decrescente Vetor Parcialmente Decrescente
![Page 12: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/12.jpg)
12
Selection Sort: Eficiente para quais sequências?
Vetor Crescente Vetor Parcialmente Crescente
Vetor Decrescente Vetor Parcialmente Decrescente
Para qualquer sequência o algoritmo custa n²/2 – n/2 → O(n²)
![Page 13: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/13.jpg)
13
Selection Sort
10 30 50 70 90 110
130
150
170
190
210
230
250
270
290
310
330
350
370
390
410
430
450
470
490
0
20000
40000
60000
80000
100000
120000
140000
Número de elementos = n
Tempo(comparações)
Número de comparações, em qualquer caso = O(n²)
![Page 14: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/14.jpg)
14
Versão recursiva do Selection Sort
![Page 15: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/15.jpg)
15
Selection Sort (http://sortvis.org)
Seleciona o maior elemento em cada iteração
![Page 16: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/16.jpg)
16
(3)Insertion Sort:Algoritmo de ordenação por inserção
![Page 17: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/17.jpg)
17
Insertion Sort
Animação: https://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html
Método preferido dos jogadores de cartas
Em cada passo, a partir do i=1, o i-ésimo elemento da sequência fonte é apanhado e transferido para a sequência destino, sendo inserido no seu lugar apropriado.
1 5 7 10 55 6
1 5 7 10 55
6
0 1 2 3 4 5 6 …
![Page 18: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/18.jpg)
18
Insertion Sort
A principal característica deste algoritmo consiste em ordenar o vetor utilizando um subvetor ordenado em seu inicio.
A cada novo passo, acrescentamos a este subvetor mais um elemento até atingirmos o último elemento de um arranjo.
Ordenado Sem ordem
![Page 19: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/19.jpg)
19
void InsertionSort (int[] v, int n)
![Page 20: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/20.jpg)
20
Insertion Sort
Pense, no recesso, em uma versão recursiva?
![Page 21: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/21.jpg)
21
Insertion Sort: Eficiente para quais sequências?
Vetor Crescente Vetor Parcialmente Crescente
Vetor Decrescente Vetor Parcialmente Decrescente
![Page 22: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/22.jpg)
22
Insertion Sort: Eficiente para quais sequências?
Vetor Crescente Vetor Parcialmente Crescente
Vetor Decrescente Vetor Parcialmente Decrescente
Este algoritmo é o mais apropriado quando os elementos do vetor estiverem ordenados ou parcialmente ordenados.
![Page 23: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/23.jpg)
23
Insertion Sort
i=1 1
i=2 2
i=3 3
…
i=n-1 n-1
Comparações
0 1 2 3 4 5 6
n=7
L=
Tempo = (n–1)(n)/2Tempo = n²/2 – n/2
Tempo = O(n²)Número de comparações T(n):- No melhor caso: T(n) = n-1- No pior caso: T(n) = n²/2 – n/2
![Page 24: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/24.jpg)
24
Insertion Sort (http://sortvis.org)
![Page 25: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/25.jpg)
25
(4)Bubble Sort:Ordenação pelo método da bolhaOrdenação por troca dois-a-dois
![Page 26: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/26.jpg)
26
Bubble Sort
O algoritmo de ordenação baseado em troca, consiste em intercalar pares de elementos que não estão em ordem até que não exista mais pares.
O principio do bolha é a troca de valores entre posições consecutivas fazendo com que os valores mais altos “borbulhem” para o final do vetor.
Animação: https://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html
![Page 27: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/27.jpg)
27
Bubble Sort
![Page 28: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/28.jpg)
28
Bubble Sort (http://sortvis.org)
![Page 29: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/29.jpg)
29
Bubble Sort: Eficiente para quais sequências?
Vetor Crescente Vetor Parcialmente Crescente
Vetor Decrescente Vetor Parcialmente Decrescente
![Page 30: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/30.jpg)
30
Bubble Sort
k=n-1 n-1
k=n-2 n-2
k=n-3 n-3
…
k=1 1
Comparações
0 1 2 3 4 5 6
n=7
L=
Tempo = (n–1)(n)/2Tempo = n²/2 – n/2
![Page 31: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/31.jpg)
31
Bubble Sort: Eficiente para quais sequências?
Vetor Crescente Vetor Parcialmente Crescente
Vetor Decrescente Vetor Parcialmente Decrescente
Para qualquer sequência o algoritmo custa n²/2 – n/2 → O(n²)
![Page 32: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/32.jpg)
32
Teste de avaliação
![Page 33: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/33.jpg)
33
Questão 1
Uma versão alternativa do algoritmo de Bubble Sort
![Page 34: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/34.jpg)
34
Questão 1
Uma versão alternativa do algoritmo de Bubble Sort
0 1 2 3 4 5 6
n=7
L=
![Page 35: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/35.jpg)
35
Questão 1
Número de comparações T(n):- No melhor caso: T(n) = n²/2 – n/2- No pior caso: T(n) = n²/2 – n/2
Número de comparações T(n):- No melhor caso: T(n) = n-1- No pior caso: T(n) = n(n-1)
![Page 36: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/36.jpg)
36
Questão 2
![Page 37: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/37.jpg)
37
Questão 2: Cocktail Sort
http://sortvis.org
![Page 38: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/38.jpg)
38
Questão 2: Cocktail Sort
![Page 39: Aula 17: - Métodos simples de ordenaçãoprofessor.ufabc.edu.br/~jesus.mena/courses/pe-3q-2017/PE-aula17.pdf1 Aula 17: - Métodos simples de ordenação MCTA028 – Programação](https://reader036.vdocuments.pub/reader036/viewer/2022063011/5fc4a6b7c70ee443ae2b9530/html5/thumbnails/39.jpg)
39
Questão 3
Tabela com número de comparações necessárias para ordenar uma sequência de n elementos.
Algoritmo Melhor caso Pior caso
Selection sort n²/2 – n/2 n²/2 – n/2
Insertion sort n-1 n²/2 – n/2
Bubble sort n²/2 – n/2 n²/2 – n/2
Bubble2 sort n-1 n² – n
Cocktail sort n-1 ???