Вы находитесь на странице: 1из 13

1

Algoritmos de Ordenamento
Ordenamento por Seleco (Selection Sort)
Ordenamento por Borbulhamento (Bubble Sort)
Ordenamento por Insero
Algoritmos de Pesquisa em Vectores
Pesquisa Sequencial ou Linear
Pesquisa Linear com Sentinela
Pesquisa Binria
2
Algoritmos de Ordenamento
Ordenamento por Seleco
Dados: Vector a Ordenar T; N de Elementos N
Algoritmo:
@ Escolher o elemento mais pequeno T
i
e troc-lo com
o primeiro elemento do vector. O 1 elemento
colocado na posio correcta.
@ Escolher o elemento menor de entre os elementos
nas posies 1 a N-1 e troca-se com o 2 elemento
do vector. O 2 elemento colocado na posio
correcta.
@ Continuar at toda o vector se encontrar ordenado.
3
Ordenamento por Seleco
Exemplo #1
2
Vector Original
1 Passagem
18 1 10
1 18 2 10
2 Passagem
1 2 18
10
3 Passagem
1 2 10
18
4
Ordenamento por Seleco
Exemplo #2
32
Vector Original
1 Passagem
19 5 2
2 19 5 32
2 Passagem
2 5 19
32
3 Passagem
2 19
32 5
5
Ordenamento por Seleco - Algoritmo
Algoritmo OrdSelec
Objectivo: : : : Ordenar um vector T com N elementos.
Incio
i <- 0
Enquanto (i< N) faz
Calcula posio do menor valor(Tminimo) entre Ti e TN-1
Troca Ti com Tminimo
i <- i +1
Fim Enquanto
Fim
6
Ordenamento por Seleco - Algoritmo
Algoritmo CalcPosMin
Objectivo: Obter e retornar a posio do menor valor do vector
T, entre o ndice i e N-1.
Incio
menor <- i
Enquanto (i< N) Faz
Se (T
i+1
< T
menor
) Ento Faz
menor <- i+1
Fimfaz
i <- i+1
Fimfaz
Retorna menor
Fim
7
Ordenamento por Borbulhagem
Dados: Vector Ordenar T, por ordem crescente ; N de Elementos N
Algoritmo :
@ Percorrer todo o vector comparando elementos adjacentes, 1
com o 2, o 2 com o 3 , etc . Sempre que forem encontrados
dois elementos cuja ordem est invertida, trocam-se. No fim da
primeira passagem pelo vector, temos o ltimo elemento
ordenado.
@ Percorrer o vector entre o 1 e o penltimo elemento do
mesmo modo. No fim desta segunda passagem temos os dois
ltimos elementos ordenados.
@ Proceder do mesmo modo entre o primeiro e o antepenltimo,
e assim sucessivamente at toda o vector estar ordenado.
@ O processo de ordenamento termina quando ao ser efectuada
uma passagem completa no ocorreu nenhuma troca.
8
Ordenamento por Borbulhagem
Exemplo #3
Vector Original {3, 1, 9, 6, 7} 1 Passagem
3
1 9 6 7
1
3 9 6 7
1
3 6 9 7
1
3 6 7 9
1
3 9 6 7
9
Ordenamento por Borbulhagem
Exemplo #3
2 Passagem
1
3 6 7 9
Nesta Passagem no ocorreram trocas
Vector Ordenado
10
Ordenamento por Borbulhagem
Exemplo #4
Vector Original { 9, 6, 7, 1, 5} 1 Passagem
9 6 7 1 5
6
9 7 1 5
6
7 9 1 5
6
7 1 9 5
6
7
1
5
9
11
Ordenamento por Borbulhagem
Exemplo #4
Vector Original { 9, 6, 7, 1, 5} 2 Passagem
6 7
1
5
9
6 7
1
5 9
6 1
7
5 9
6 1
5 7
9
12
Ordenamento por Borbulhagem
Exemplo #4
Vector Original { 9, 6, 7, 1, 5} 3 Passagem
6 1
5 7 9
1 6
5 7 9
1 5
6 7 9
1 5
6 7 9
13
Ordenamento por Borbulhagem
Exemplo #4
4 Passagem
Nesta Passagem no ocorreram trocas
Vector Ordenado
1 5
6 7 9
14
Ordenamento por Borbulhagem - Algoritmo
Algoritmo Ord_Bolhas Objectivo: ordenar o vector T de N
elementos.
INCIO
k <- 0
ordenada <- 0 //Vector no se encontra ordenado
Enquanto (k < N - 1) E (no ordenada) Faz
j <- 0
ordenada <- 1
Enquanto (j < (N-k)) Faz
Se (Tj+1 < Tj) Ento Faz
orden <- 0
temp <- T
j+1
T
j+1
<- T
j
Tj <- temp
Fimfaz
j <- j + 1
FimEnquanto
k <- k+1
FimEnquanto
FimAlgoritmo
Troca Elementos
17
Ordenamento por Insero
Dados: Vector T Ordenado
N de Elementos N
Sequncia de elementos do vector T
0
, , T
N-1
Sendo T
0
T
1
. . . T
N_1
Algoritmo:
Inserindo um novo elemento X, a sequncia de elementos
deve manter-se ordenada.
18
Ordenamento por Insero - Algoritmo
Algoritmo InsereOrdenado
Objectivo: Inserir um elemento X no vector ordenadamente, estando o
vector j ordenado por ordem crescente, sendo N o nmero de elementos
ordenados inicialmente.
Incio
j <- N-1
Enquanto (X < Tj )faz
Tj+1 <- Tj (move Tj para a posio superior uma casa pois
X ter de ser inserida abaixo de Tj)
j <- j-1
FimEnquanto
Tj+1 <- X
Fim
19
Algoritmos de Pesquisa em Vectores
Pesquisa Sequencial ou Linear
Pesquisa Linear com Sentinela
Pesquisa Binria
20
Algoritmos de Pesquisa
Pesquisa Sequencial ou Linear
Dados: Vector no Ordenado T;
N de Elementos N;
Elemento (X) a procurar
Algoritmo:
O elemento X comparado sequencialmente com
todos os elementos do vector T, at ser
encontrado o elemento ou termos chegado ao fim
do vector.
21
Pesquisa Sequencial ou Linear - Algoritmo
Algoritmo PesqSeq
Objectivo: procurar um elemento X, sequencialmente, no vector T de N
elementos. devolvida a posio do elemento se este existir, ou o valor 1
caso contrrio.
Incio
i <- 0
Enquanto (i < N) E (X Ti) Faz
i <- i +1
Fimfaz
Se (X = Ti ) Ento Faz
Devolve i
Seno Faz
Devolve -1
Fim
22
Pesquisa Sequencial ou Linear
2 comparao (situao ptima)
2*N comparaes (pior situao )
Em mdia -> N comparaes.
Nmero de comparaes ??
23
Pesquisa Sequencial com Sentinela
Dados: Vector no Ordenado T;
N de Elementos N;
Elemento (X) a procurar
Algoritmo :
Existe uma implementao alternativa em que s
so necessrias N/2 comparaes e no N.
Para tal, colocamos na posio de ndice N o
elemento X a procurar.
24
Pesquisa Sequencial com Sentinela
Algoritmo
Algoritmo PesqSeqComSentinela
Objectivo: procurar um elemento X, no vector T elementos. devolvido a
posio do elemento se este existir, ou o valor 1 em caso contrrio.
Incio
i <-0
T
N
<- X
Enquanto ( X Ti ) Faz
i <-i +1
Fimfaz
Se (i = N) Ento Faz
Devolve -1
Seno Faz
Devolve i
Fim
25
Algoritmo de Pesquisa com Sentinela
1 comparao (situao ptima)
N comparaes (pior situao )
Em mdia -> N/2 comparaes do tipo X != Ti
Nmero de comparaes ??
26
Pesquisa Binria
Dados: Vector T Ordenado; N Elementos; Elemento (X) a pesquisar
Algoritmo:
@ A procura do nmero efectuada sucessivamente em
intervalos cada vez mais pequenos, reduzindo-se em cada
passagem o intervalo de pesquisa a metade.
@ Em primeiro lugar o vector dividido ao meio. A seguir,
verifica-se em qual das metades pode estar o valor
procurado. Na metade em que isso for possvel - a primeira
metade do vector limitada por Ti e Tj e a segunda por
Tj+1 e Tk - procura-se na primeira metade se Ti< X <Tj e na
segunda no caso contrrio.
@ Divide-se novamente ao meio o sub-vector e assim
sucessivamente at encontrar o valor pretendido ou at no
se poder subdividir mais.
27
Algoritmo PesquisaBinaria
Objectivo: indica se um nmero X existe ou no no
vector T, de N elementos
Incio
Inf <- 0
Sup <- N-1
Enquanto (Inf<Sup) E (TInfX) E
(TSup X) Faz
Novo <- (Inf+Sup) / 2
Se (TNovo> X) ento faz
Sup <- Novo
Inf <- Inf+1
Senao Faz
Inf <- Novo
Sup <- Sup-1
Fimfaz
Fimfaz
Se (TInf= X) OU (TSup= X) Ento Faz
Retorna 1
Seno Faz
Retorna 0
FimEnquanto
Fim
28
Pesquisa Binria
Implemetntao
void pesqBinaria(int *T, int n, int X){
int meio, inf, sup;
inf=0; sup=n-1;
while(inf<sup && T[inf]!=X && T[sup]!=X){
meio=(inf + sup)/2 ;
if (T[meio]>X){
sup=meio;
inf++;
}
else {
sup--;
inf=meio;
}
}//while
if(T[inf]==X || T[sup]==X)
printf("Existe o %d no vector\n",X);
else
printf("Nao existe o %d no vector\n",X);
}

Вам также может понравиться