Académique Documents
Professionnel Documents
Culture Documents
2007/08
A.E.D.
F.S.B.
Procura em vectores
2007/08
A.E.D.
F.S.B.
i = 0
ENQUANTO i < dim E vect[ i ] != x FAZER
i = i +1
FIM
Exemplo de uso:
if( res == -1 )
System.out.println( x + “ não foi encontrado!” );
else
System.out.println( x + “ foi encontrado na posição ” + res );
}
if( !encontrou )
return –1;
return meio;
}
Exemplo de procura do nº 10
2 3 5 7 9 10 11 12 17 19 21 28 30 33 38 42 45 55
esq dir
1ª iteração meio
2 3 5 7 9 10 11 12 17 19 21 28 30 33 38 42 45 55
esq dir
2ª iteração meio
2 3 5 7 9 10 11 12
esq dir
3ª iteração meio
9 10 11 12
Encontrou
Procura em vectores : binária
2007/08
A.E.D.
F.S.B.
Exemplo de procura do nº 4
2 3 5 7 9 10 11 12 17 19 21 28 30 33 38 42 45 55
esq dir
1ª iteração meio
2 3 5 7 9 10 11 12 17 19 21 28 30 33 38 42 45 55
esq dir
2ª iteração meio
2 3 5 7 9 10 11 12
esq dir
3ª iteração meio
2 3 5
esq
dir
4ª iteração meio
5
dir esq
5ª iteração Não encontrou
Ordenação de vectores
2007/08
A.E.D.
F.S.B.
2007/08
A.E.D.
F.S.B. Ordenação de vectores : inserção
Algoritmo de ordenação por inserção directa,
assumindo:
vect é o vector a ordenar
dim é a dimensão do vector
O índice do primeiro elemento é 0 (zero)
9 9 3 3 3 3 3 3 2 2 2
3 3 9 9 5 5 5 5 3 3 3
5 5 5 5 9 9 9 9 5 5 5
11 11 11 11 11 11 11 11 9 9 7
2 2 2 2 2 2 2 2 11 11 9
7 7 7 7 7 7 7 7 7 7 11
2007/08
A.E.D.
F.S.B. Ordenação de vectores : inserção
O algoritmo de ordenação por inserção pode ser
implementado pelo seguinte método:
int v[13] = { 2, 4, 65, 54, 34, 23, 90, 12, 6, 78, 87, 26, 42 };
ordenaInsercaoDirecta( v );
2007/08
A.E.D.
F.S.B. Ordenação de vectores : selecção
Ordenação por selecção
Neste caso percorre-se o vector, procurando o menor
elemento e coloca-se este na primeira posição
O elemento na primeira posição é colocado na
posição ocupada anteriormente pelo menor
Repete-se para os restantes elementos
2007/08
A.E.D.
F.S.B. Ordenação de vectores : selecção
Algoritmo de ordenação por selecção
assumindo:
vect é o vector a ordenar
dim é a dimensão do vector
O índice do primeiro elemento é 0 (zero)
2007/08
A.E.D.
F.S.B. Ordenação de vectores : selecção
Exemplificação do algoritmo
9 9 2 2 2 2 2 2 2 2 2
menor
3 3 3 3 3 3 3 3 3 3 3
menor
5 5 5 5 5 5 5 5 5 5 5
11 11 11 11 11 11 11 11 7 7 7
menor
menor
2 2 9 9 9 9 9 9 9 9 9
menor
7 7 7 7 7 7 7 7 11 11 11
2007/08
A.E.D.
F.S.B. Ordenação de vectores : selecção
O algoritmo de ordenação por selecção pode ser
implementado pela seguinte função:
2007/08
A.E.D.
F.S.B. Ordenação de vectores : permutação
Ordenação por permutação
Neste caso percorre-se o vector, do último para o
primeiro, comparando elementos consecutivos dois a
dois e trocando-os se estiverem na ordem inversa
Após a primeira iteração o menor valor estará na
primeira posição, pelo que as repetições seguintes,
deverão ter em conta apenas os restantes elementos
e assim sucessivamente
Chama-se a este algoritmo Bubblesort
2007/08
A.E.D.
F.S.B. Ordenação de vectores : permutação
Algoritmo da ordenação por permutação
(bubblesort) assumindo:
vect é o vector a ordenar
dim é a dimensão do vector
O índice do primeiro elemento é 0 (zero)
2007/08
A.E.D.
F.S.B. Ordenação de vectores : permutação
Pode-se fazer uma melhoria óbvia ao algoritmo:
Se não houve permutações é porque o vector já está
ordenado
ordenado = FALSO
i = 0
ENQUANTO i < dim-1 E NÃO ordenado FAZER
ordenado = VERDADE
PARA j = dim - 1 ATÉ i + 1 FAZER
SE vect[ j - 1 ] > vect[ j ] FAZER
TROCAR vect[ i ] COM vect[ j ]
ordenado = FALSO
FIM
i = i +1
FIM
2007/08
A.E.D.
F.S.B. Ordenação de vectores : permutação
Exemplificação do algoritmo
1ª iteração 2ª iteração
2 2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3 3
9 9 9 5 5 5 5 5 5
5 5 5 9 9 9 7 7 7
7 7 7 7 7 7 9 9 9
11 11 11 11 11 11 11 11 11
2007/08
A.E.D.
F.S.B. Ordenação de vectores : permutação
O algoritmo de ordenação Bubblesort pode ser
implementado pelo seguinte método:
void bubbleSort( int oVector[] ) {
boolean ordenado = false;
int i = 0;