Você está na página 1de 13

Miguel Domingues FCUP/LCC 2006

Algoritmos de Ordenação (Intro.)


Selection Sort, Bubble Sort
“Imaginem que...”
 Querem telefonar a um amigo a partir do vosso
telemóvel. Como devem proceder?
1. abrir a lista de contactos do telemóvel
2. pesquisar o nome do amigo
3. efectuar a chamada

 Mas e se...
1. a lista de contactos fosse a lista telefónica nacional?
2. a lista telefónica nacional não estivesse ordenada?

“... pesquisar toda a lista até encontrar o vosso amigo!”


Pesquisar Vs Ordenar
 O que é pesquisar?
 é encontrar os elementos que satisfazem um
determinado critério (ex: o aluno mais alto)

 O que é ordenar?
 é colocar os elementos em sequência de acordo com
um determinado critério (ex: altura dos alunos)

 Então quando é que ordenar ajuda a pesquisar?


 Quando o critério (ou chave) é o mesmo!
Vantagens da Ordenação
 Pesquisa mais eficiente
 obtenho o resultado em menos tempo
 obtenho o resultado com menos recursos

 Informação organizada
 posso apresentar a informação ordenada
 posso comparar os elementos mais facilmente

“... o acesso aos dados melhora globalmente!”


“Vamos ordenar...”
1. Seleccionar a menor carta
2. Trocar pela primeira carta

ort ção
3. Seleccionar a menor carta

n S le c
4. Trocar pela primeira carta

)
t io S e
lec por
5. Seleccionar a menor carta

(Se ção
6. Trocar pela primeira carta

na
de
7. Seleccionar a menor carta

Or
8. Trocar pela primeira carta

Algoritmo de Ordenação ?
Algoritmo de Ordenação
 Em ciências da computação, é um algoritmo que
ordena os elementos de uma sequência de acordo
com um critério...

 Ordenação por Selecção (Selection Sort)


 Mais intuitivo
 Eficiente para um pequeno número de elementos
 A técnica principal é a selecção
 Evolui para uma ordenação parcial
Ordenação por Troca (Bubble Sort)
 O Bubble Sort ou ordenação “por bolha”, também é um
algoritmo de ordenação...
 Muito Simples
 A técnica principal é a troca
 Evolui para uma ordenação total
 Eficiente para um pequeno número de elementos

 A ideia é percorrer o vector de elementos e a cada


passagem fazer flutuar para o topo os menores elementos
“... tal como as bolhas de ar num aquário!”
“Vamos ordenar...”
 Tendo por base o algoritmo de Ordenação por Troca (Bubble
Sort), ordene o vector V=[10, 6, 8, 2, 5]

para i = n até 1 (-1) V1 10 6 8 2 5 i k k+1 C T

{ V2 6 10 8 2 5 5 1 2 1 1
para k = 1 até i - 1 V3 6 8 10 2 5 5 2 3 1 1
{ V4 6 8 2 10 5 5 3 4 1 1
se v[k] > v[k+1]
V5 6 8 2 5 10 5 4 5 1 1
{
V6 6 8 2 5 10 4 1 2 1 0
aux = v[k];
v[k] = v[k+1]; V7 6 2 8 5 10 4 2 3 1 1

v[k + 1] = aux; V8 6 2 5 8 10 4 3 4 1 1
} V9 2 6 5 8 10 3 1 2 1 1
} V10 2 5 6 8 10 3 2 3 1 1
} ... ... ... ... ... ... ... ... ... 9 8
Qual o Melhor Algoritmo?
Selection Sort Bubble Sort
V1 10 6 8 2 5 C T V1 10 6 8 2 5 C T

V2 2 6 8 10 5 4 1 V2 6 10 8 2 5 1 1

V3 2 5 8 10 6 3 1 V3 6 8 10 2 5 1 1

V4 2 5 6 10 8 2 1 V4 6 8 2 10 5 1 1

V5 2 5 6 8 10 1 1 V5 6 8 2 5 10 1 1

... ... ... ... ... ... 10 4 V6 6 8 2 5 10 1 0

V7 6 2 8 5 10 1 1

V8 6 2 5 8 10 1 1
C – Comparações
T – Trocas V9 2 6 5 8 10 1 1

V10 2 5 6 8 10 1 1

... ... ... ... ... ... 9 8


Qual o Melhor Algoritmo?
 Eficiência?
 nº comparações, nº trocas, memória auxiliar,
 tempo processamento, estabilidade
 Complexidade da implementação?
 simples, avançada  memória, tempo
 Técnica de ordenação (comparações, trocas)?
 selecção, troca, ...  nºcomparações, nºtrocas
 Método de comparação (comparações, tempo)?
 numérica, lexicográfica  comparações, tempo
 Evolução da ordenação?
 parcial, total
“... não há algoritmos bons ou maus,
há algoritmos mais ou menos adequados!”
Outros Algoritmos
 Simples  Avançados
 Selection sort  Quick sort
 Insertion sort  Merge sort
 Bubble sort
 Heap sort
 Radix sort
 Shell sort
 Gnome sort
 Counting sort
 Bogo sort

“... um destes algoritmos é potencialmente mais rápido


que todos os outros! Sabem qual é?...”
Mapa de Conceitos
Selection
Sort

Ordenar
Algortimos de
Ordenação Bubble
Acesso aos
Sort
Dados
Tempo

Pesquisar Eficiência do
Algoritmo
Memória
Comparações

Trocas
Miguel Domingues FCUP/LCC 2006

Comentários e Questões ? ? ?

Você também pode gostar