Computing">
Aula 13 - Ordenacao
Aula 13 - Ordenacao
Aula 13 - Ordenacao
skoutaris/sorting-algorithms-fa96ce78006d
ALGORITMOS DE ORDENAÇÃO
Adaptado: Prof. André Backes Profª Otilia
Objetivos
2
Ordenação
Ato de colocar um conjunto de dados em uma determinada ordem
predefinida
Fora de ordem
◼ 5, 2, 1, 3, 4
Ordenado
◼ 1, 2, 3, 4, 5 OU 5, 4, 3, 2, 1
Algoritmo de ordenação
Coloca um conjunto de elementos em uma certa ordem
◼ 1, 2, 3, 4, 5
◼ 1, 2, 3, 4, 5
Decrescente
◼ 5, 4, 3, 2, 1
Exemplo
Dados não ordenados
◼ 5a, 2, 5b, 3, 4, 1
◼ 5a e 5b são o mesmo número
Dados ordenados
◼ 1, 2, 3, 4, 5a, 5b: ordenação estável
◼ 1, 2, 3, 4, 5b, 5a: ordenação não-estável
Estrutura de Dados em C - Ordenação
Métodos de ordenação
13
◼ Fácil implementação
Sofisticados
Funcionamento
Compara pares de valores adjacentes e os troca de lugar se estiverem
na ordem errada
◼ Trabalha de forma a movimentar, uma posição por vez, o maior valor existente
na porção não ordenada de um array para a sua respectiva posição no array
ordenado
Esse processo se repete até que mais nenhuma troca seja necessária
◼ Elementos já ordenados
Algoritmo
Passo a passo
1ºiteração do-while: encontra o maior valor e o movimenta até a
última posição
Passo a passo
2º
iteração do-while: encontra o segundo maior valor e o
movimenta até a penúltima posição
Passo a passo
Processo continua até todo o array estar ordenado
Vantagens
Simples e de fácil entendimento e implementação
Desvantagens
Não é um algoritmo eficiente
◼ Sua eficiência diminui drasticamente a medida que o número de elementos no
array aumenta
Complexidade
Considerando um array com N elementos, o tempo de execução é:
◼ O(N), melhor caso: os elementos já estão ordenados.
Funcionamento
A cada passo, procura o menor valor do array e o coloca na primeira
posição do array
◼ Divide o array em duas partes: a parte ordenada, a esquerda do elemento
analisado, e a parte que ainda não foi ordenada, a direita do elemento.
Algoritmo
Procura o
menor elemento
em relação a “i”
Troca os
valores da
posição atual
com a “menor”
Passo a passo
Paracada posição i, procura no restante do array o menor valor
para ocupá-la
Passo a passo
Paracada posição i, procura no restante do array o menor valor
para ocupá-la
Vantagem
Estável: não altera a ordem dos dados iguais
Desvantagens
Sua eficiência diminui drasticamente a medida que o número de
elementos no array aumenta
◼ Não é recomendado para aplicações que que envolvam grandes
quantidade de dados ou que precisem de velocidade
Complexidade
Considerando um array com N elementos, o tempo de execução é
sempre de ordem O(N2)
◼ A eficiência do selection sort não depende da ordem inicial dos elementos
Funcionamento
O algoritmo percorre o array e para cada posição X verifica se o
seu valor está na posição correta
◼ Isso é feito andando para o começo do array a partir da posição X e
movimentando uma posição para frente os valores que são maiores do
que o valor da posição X
◼ Desse modo, teremos uma posição livre para inserir o valor da posição X
em seu devido lugar
Estrutura de Dados em C - Ordenação
Algoritmo Insertion Sort
34
Algoritmo
Passo a passo
Paracada posição i, movimenta os valores maiores uma posição
para frente no array
Passo a passo
Paracada posição i, movimenta os valores maiores uma posição
para frente no array
Vantagens
Fácil implementação
Na prática, é mais eficiente que a maioria dos algoritmos de
ordem quadrática
◼ Como o selection sort e o bubble sort.
Vantagens
Estável: não altera a ordem dos dados iguais
Online
Complexidade
Considerando um array com N elementos, o tempo de execução é:
◼ O(N), melhor caso: os elementos já estão ordenados.
Relembrando
◼ etc