Buscar

AED1 04 Ordenacao

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 49 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 49 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 49 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Métodos de Ordenação:
Selection, Insertion, Bubble, Merge (Sort)
Prof. Hebert Coelho
Profa. Nádia Félix
Prof. Wanderley Alencar
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Ordenação
Conceito
É a operação de rearranjar os dados em uma determinada
ordem.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Ordenação
Problema da ordenação - Definição formal [1]
Entrada: Uma sequência de n números 〈a1, a2, . . . , an〉, com
n ∈ <.
Saída: Uma permutação (reordenada) 〈a′1, a′2, . . . , a′n〉 da
sequência de entrada tal que a′1 ≤ a′2 ≤ . . . ≤ a′n.
onde o símbolo ≤ representa uma determinada relação de
ordem entre os números, não necessariamente a de “ menor
ou igual a”.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Ordenação
Observações
Muitas vezes, a eficiência no manuseio de dados a serem
ordenados pode ser aumentada se os estes estiverem
dispostos de acordo com algum critério de ordem.
Exemplo: Uma lista telefônica sem qualquer ordem na
disposição dos nomes dos assinantes...
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Ordenação
Observações
A eficiência no manuseio de dados muitas vezes pode ser
aumentada se os dados estiverem dispostos de acordo
com algum critério de ordem.
Exemplo: Uma lista telefônica em que os nomes dos
assinantes estão previamente separados em grupos de
acordo com a letra inicial do nome de cada assinante.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Ordenação
Algoritmos: Classificação Computacional
Computacionalmente, considerando os dispositivos de
armazenamento sobre os quais o algoritmo de ordenação
terá que atuar, é possível categorizá-los em algoritmos
de...
1 Ordenação Interna: quando os dados a serem ordenados
estão integralmente na memória principal;
2 Ordenação Externa: quando os dados a serem ordenados
necessitam de armazenamento em memória secundária
(fita (magnética ou digital), HD, SSD, etc.).
Nesta disciplina estamos interessados apenas em métodos de
ordenação interna.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Ordenação
Algoritmos: Classificação Computacional
Computacionalmente, considerando os dispositivos de
armazenamento sobre os quais o algoritmo de ordenação
terá que atuar, é possível categorizá-los em algoritmos
de...
1 Ordenação Interna: quando os dados a serem ordenados
estão integralmente na memória principal;
2 Ordenação Externa: quando os dados a serem ordenados
necessitam de armazenamento em memória secundária
(fita (magnética ou digital), HD, SSD, etc.).
Nesta disciplina estamos interessados apenas em métodos de
ordenação interna.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Ordenação
Algoritmos: Classificação Computacional
Nesta disciplina estamos interessados apenas em métodos de
ordenação interna.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Ordenação Interna
Introdução
Na escolha de um método de ordenação interna devem ser
considerados, principalmente:
O tempo gasto para a ordenaçãoa;
O uso eficiente da memória principal disponível.
aLembre-se: o termo tempo, neste contexto, significa o número de
operações realizadas para dar integral consecução à operação desejada.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Ordenação Interna
Introdução
A maioria dos métodos de ordenação é baseado na
comparação das chaves dos elementos que formam o
conjunto de dados a ordenar:
Exemplos: Bubble Sort, Insertion Sort, Selection Sort,
Merge Sort, etc.
Existem métodos de ordenação que utilizam o princípio da
distribuição:
Exemplos: Radix Sort, Bucket Sort, etc.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Aplicação
Algoritmos de ordenação interna podem ser aplicados a
diversas estruturas de dados, tais como:
Vetores;
Matrizes;
Estruturas dinâmicas (listas lineares encadeadas, etc.).
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Classificação
Um algoritmo de ordenação é estável se preservar a ordem
relativa de elementos com valores idênticos para a chave de
ordenação considerada, ou seja, os elementos com chaves
idênticas são mantidos na mesma ordem que estavam antes
da ordenação ocorrer.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Classificação
Um algoritmo de ordenação é não estável quando não garante
que a ordem relativa de elementos com valores idênticos para
a chave de ordenação considerada será mantida após a
ordenação ocorrer.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Insertion Sort
O algoritmo de ordenação “por inserção” aplica a ideia de
dividir os elementos a serem ordenados em duas
subestruturas, cada uma armazenando os elementos:
já ordenados;
os por ordenar.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Insertion Sort – Exemplo de uso:
O R D E N A
O R D E N A
O R D E N A
D O R E N A
D E O R N A
D E N O R A
A D E N O R
Intercultural Computer Science Education
https://www.youtube.com/watch?v=ROalU379l3U
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Insertion Sort – Exemplo de uso:
O R D E N A
O R D E N A
O R D E N A
D O R E N A
D E O R N A
D E N O R A
A D E N O R
Intercultural Computer Science Education
https://www.youtube.com/watch?v=ROalU379l3U
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Insertion Sort – Exemplo de uso:
O R D E N A
O R D E N A
O R D E N A
D O R E N A
D E O R N A
D E N O R A
A D E N O R
Intercultural Computer Science Education
https://www.youtube.com/watch?v=ROalU379l3U
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Insertion Sort – Exemplo de uso:
O R D E N A
O R D E N A
O R D E N A
D O R E N A
D E O R N A
D E N O R A
A D E N O R
Intercultural Computer Science Education
https://www.youtube.com/watch?v=ROalU379l3U
Hebert Coelho,Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Insertion Sort – Exemplo de uso:
O R D E N A
O R D E N A
O R D E N A
D O R E N A
D E O R N A
D E N O R A
A D E N O R
Intercultural Computer Science Education
https://www.youtube.com/watch?v=ROalU379l3U
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Insertion Sort – Exemplo de uso:
O R D E N A
O R D E N A
O R D E N A
D O R E N A
D E O R N A
D E N O R A
A D E N O R
Intercultural Computer Science Education
https://www.youtube.com/watch?v=ROalU379l3U
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Insertion Sort – Exemplo de uso:
O R D E N A
O R D E N A
O R D E N A
D O R E N A
D E O R N A
D E N O R A
A D E N O R
Intercultural Computer Science Education
https://www.youtube.com/watch?v=ROalU379l3U
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Insertion Sort – Código fonte em C:
1 // v é o vetor e n representa o seu tamanho − quantidade de elementos
2 void insertionSort( int∗ v, int n ) {
3 int i = 0, j = 1, aux = 0;
4 while (j < n) {
5 aux = v[j];
6 i = j − 1;
7 while ((i >= 0) && (v[i] > aux)) {
8 v[i + 1] = v[i];
9 i = i − 1;
10 }
11 v[i + 1] = aux;
12 j = j + 1;
13 }
14 }
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Insertion Sort – Exercícios
Considere que o procedimento insertionSort será
executado utilizando um vetor de tamanho cinco, onde:
1 as chaves estão previamente dispostas em ordem
crescente.
2 as chaves estão previamente dispostas em ordem
decrescente;
Conte, em cada caso, o número de vezes que a declaração
v[i+1] = aux; é executada.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Insertion Sort – Exercícios
1 Qual é o pior caso e o melhor caso para este algoritmo?
2 A ordenação por inserção é do tipo estável?
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Insertion Sort – Nota-se que:
O número mínimo de comparações e movimentos ocorre
quando os elementos estão, originalmente, na ordem
desejada;
O número máximo de comparações e movimentos ocorre
quando os elementos estão, originalmente, na ordem
inversa à ordem desejada;
É um bom método a ser usado quando a sequência está
quase ordenada ou quando se deseja adicionar poucos
elementos a uma sequência já ordenada;
Ele é do tipo estável.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Selection Sort
O algoritmo de ordenação “por seleção” aplica a ideia de
procurar o elemento que possui o menor (ou maior) valor de
chave e movimentá-lo para a primeira (ou última) posição no
conjunto de dados.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Selection Sort
1 Encontre o elemento cujo valor da chave é o menor (ou
maior);
2 Movimente-o para a primeira (ou última) posição no
conjunto de dados;
3 Repita os passos anteriores para os (n − 1) elementos
remanescentes (não ordenados) do conjunto de dados.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Selection Sort – Exemplo de uso:
Intercultural Computer Science Education
https://www.youtube.com/watch?v=Ns4TPTC8whw
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Selection Sort – Código fonte em C:
1 // v é o vetor e n representa o seu tamanho − quantidade de elementos
2 void selectionSort(int∗ v, int n) {
3 int i, j, min, aux;
4 for (i = 0; i < (n−1); i++)
5 {
6 min = i;
7 for (j = (i+1); j < n; j++) {
8 if(v[j] < v[min])
9 min = j;
10 }
11 if (v[i] != v[min]) {
12 aux = v[i];
13 v[i] = v[min];
14 v[min] = aux;
15 }
16 }
17 }
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Selection Sort – Exercícios:
1 Determine o melhor e o pior caso para o
selectionSort?
2 A ordenação por seleção é do tipo estável?
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Selection Sort – Nota-se que:
1 Dentre os algoritmos de ordenação, ele apresenta uma
das menores quantidades de movimentos entre os
elementos, assim pode haver algum ganho quando se
necessita ordenar estruturas complexas;
2 Uma desvantagem é que o número de comparações é
idêntico para o melhor caso, caso médio e pior caso.
Assim, mesmo que o vetor esteja ordenado, o custo
continua quadrático (n2), onde n é o tamanho da entrada.
3 Não é um algoritmo do tipo estável (depende da
implementação).
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Bubble Sort
O algoritmo de ordenação “por bolhas” aplica a ideia de fazer
flutuar o elemento que possui o maior) valor de chave para a
última posição no conjunto de dados.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Bubble Sort
1 Flutue o elemento com maior valor de chave para a última
posição do conjunto de dados;
2 Repita, (n − 1) vezes, a flutuação anterior.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Bubble Sort – Exemplo de uso:
Usando “visualgo” para rodar exemplos
Vamos rodar um exemplo com:
https://visualgo.net/en/sorting
Intercultural Computer Science Education
https://www.youtube.com/watch?v=lyZQPjUT5B4
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Bubble Sort – Código fonte em C:
1 // v é o vetor e n representa o seu tamanho − quantidade de elementos
2 void bubbleSort(int∗ v, int n) {
3 int i, fim, aux;
4 for (fim = n−1; fim > 0; −−fim) {
5 for (i = 0; i < fim; ++i) {
6 if (v[i] > v[i+1]) {
7 aux = v[i];
8 v[i] = v[i+1];
9 v[i+1] = aux;
10 }
11 }
12 }
13 }
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Bubble Sort – Exercícios:
1 Determine o melhor e o pior caso para o BubbleSort;2 Como o algoritmo BubbleSort apresentado pode ser
melhorado?
3 O BubbleSort é do tipo estável?
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Bubble Sort – Exercícios:
Como o algoritmo BubbleSort apresentado pode ser
melhorado?
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Bubble Sort – Exercícios:
Resposta: Basta terminar a execução quando “nenhuma
troca” é realizada após uma passada pelo vetor.
Para isso, basta criarmos uma variável booleana para
controlar se houve, ou não, uma troca.
Dica: tente implementar esta alteração.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Bubble Sort – Nota-se que:
1 Ele é simples de entender e de implementar;
2 Tem uma desvantagem que, na prática, possui maior
tempo de execução mesmo quando comparado a outros
algoritmos quadráticos (n2);
3 Tem um número muito grande de movimentações de
elementos, assim não deve ser usado se a estrutura a ser
ordenada for complexa.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Merge Sort
O algoritmo de ordenação “por intercalação direta” aplica o
princípio de dividir para conquistar, pois ele sucessivamente
biparte o conjunto inicial, de tamanho n, em subconjuntos
menores até que se atinjam subconjuntos de tamanho unitário.
dados.
Em seguida intercala, dois a dois, os subconjuntos obtidos,
formando subconjuntos sucessivamente maiores (e
ordenados), até que o conjunto original, de tamanho n, seja
reconstituído já ordenado.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Merge Sort – Exemplo 01:
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Merge Sort
Divide, recursivamente, o conjunto de dados até que o
subconjunto possua UM elemento;
Combine DOIS subconjuntos de maneira a obter UM
conjunto maior e ordenado;
Esse processo se repete até que exista apenas UM
conjunto.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Merge Sort – Exemplo 02:
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Merge Sort – Pseudocódigo:
1 void mergeSort(int∗ vetor, int inicio, int fim){
2 if (inicio < fim) {
3 int meio = (inicio + fim) / 2;
4 mergeSort(vetor, inicio, meio);
5 mergeSort(vetor, meio+1, fim);
6 merge(vetor, inicio, meio, fim);
7 }
8 }
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Merge Sort – Exemplo 03:
Intercultural Computer Science Education
https://www.youtube.com/watch?v=XaqR3G_NVoo
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
1 void mergeSort(int vetor[], int inicio, int meio, int fim) {
2 int com1 = inicio, com2 = meio+1, comAux = 0, vetAux[fim−inicio+1];
3 while(com1<=meio && com2<=fim){
4 if(vetor[com1] <= vetor[com2]){
5 vetAux[comAux] = vetor[com1];
6 com1++;
7 }else{
8 vetAux[comAux] = vetor[com2];
9 com2++; }
10 comAux++; }
11 while(com1<=meio){ // Caso ainda haja elementos na primeira metade
12 vetAux[comAux] = vetor[com1];
13 comAux++;com1++; }
14 while(com2<=fim){ // Caso ainda haja elementos na segunda metade
15 vetAux[comAux] = vetor[com2];
16 comAux++;com2++; }
17 for(comAux=inicio;comAux<=fim;comAux++){
18 vetor[comAux] = vetAux[comAux−inicio];
19 }
20 }
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Merge Sort – Exercícios:
1 Determine o melhor e o pior caso para o mergeSort?
2 O mergeSort é um algoritmo do tipo estável?
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Algoritmos de Ordenação Interna
Merge Sort – Nota-se que:
1 Ele é um método de ordenação com tempo:
1 Melhor caso: n · log2 (n);
2 Pior caso:n · log2 (n);
2 Pode ser adaptado para ordenação de arquivos externos
(memória secundária);
3 Utiliza mais memória para poder ordenar (no código
anterior: vetor auxiliar);
4 O merge sort é estável: não altera a ordem dos elementos
com chaves idênticas.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
Ordenação
Ordenação Interna
Algoritmos de Ordenação Interna
Bibliografia
Bibliografia
CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L. e STEIN, C.
Introduction to Algorithms, 3a edição, MIT Press, 2009.
ZIVIANI, N. Projeto de Algoritmos: com implementações em Pascal e
C, 2a edição, Cengage Learning, 2009.
TANENBAUM, A. A., LANGSAM, Y., e AUGUSTEIN, M. J. Estruturas
de Dados Usando C, Makron Books, 1995.
Slides dos professores Humberto Longo, Márcia Cappelle, Marcelo
Quinta e Marcos Roriz
Wikipedia.
Hebert Coelho, Nádia Félix, Wanderley Alencar Métodos de Ordenação 1
	Ordenação
	Ordenação Interna
	Algoritmos de Ordenação Interna
	Bibliografia

Continue navegando