Escolar Documentos
Profissional Documentos
Cultura Documentos
Listas Lineares
1
Busca Linear Busca Linear
Busca Sequencial
Algoritmo // Busca de um elem na lista L
2
Busca Linear Busca Linear
A complexidade de pior caso do algoritmo é O(n). O número t de passos dados pelo algoritmo em uma busca
sem sucesso é variável.
Para a complexidade de caso médio, considere Consideraremos idênticas as probabilidades de ocorrência
z = probabilidade de sucesso no resultado da busca. dos diferentes valores de t .
Consideraremos idênticas as probabilidades de a chave
procurada ser encontrada em posições distintas da lista. A expressão da complexidade média do algoritmo é dada por
3
Busca Binária Busca Binária
O algoritmo examina as posições L[inf] ... L[sup]. O número de iterações é, no máximo, 1 + log n .
A cada iteração do laço, o algoritmo elimina metade das Cada iteração do laço pode ser executada em tempo
posições que ainda faltam. constante.
No pior caso, o tamanho da lista (tabela) é dado por: Desta forma, a complexidade da Busca Binária é dada por
O(log n).
Iteração 1 : tamanho n n
Iteração 2 : tamanho n/2 ~n/2
Iteração 3 : tamanho (n/2)/2 ~n/4
...
Iteração m : tamanho 1 ~n/2m
Utilizamos um algoritmo de busca em tais operações quando: Consideramos o espaço de memória disponível de B.
Não se conhece a posição do elemento a ser removido Algoritmo
A lista não pode conter elementos repetidos se n < B então
Se temos uma lista (array) ordenada e desejamos preservar se busca(x) = 0 então
tal ordem, devemos deslocar elementos da lista para a L[n+1] = novovalor;
criação ou remoção de um elemento. n = n+1;
senão imprimir(“elemento já existe”);
Se a lista é não ordenada, temos:
senão imprimir(“erro”);
Inserção: Adição do elemento no final do array
Remoção: Desloc. do último elemento para a posição removida
Remoção Remoção
Os algoritmos possuem complexidade de pior caso O(n).
Algoritmo Algoritmo
Temos:
se n ≠ 0 então se n ≠ 0 então
indice = busca(x); Vetor Ordenado
indice = busca(x); Vetor Não Ordenado
se indice ≠ 0 então se ≠ 0 então
indice (Binária)
Busca O(log n) Sequencial O(n)
valorrecuperado = L[indice]; valorrecuperado
Inserção O(n) = L[indice]; O(1)
para indice ≤ i ≤ n-1 faça para indice O(n)
Remoção ≤ i ≤ n-1 faça O(1)
L[i] = L[i+1]; L[i] = L[i+1];
n = n - 1; n = n - 1;
senão imprimir(“elemento inexistente”); senão imprimir(“elemento inexistente”);
senão imprimir(“erro”); senão imprimir(“erro”);
4
Algoritmos de Ordenação Algoritmos de Ordenação
Merge-Sort Merge
Merge Merge-Sort
MergeSort(Array A, int p , int r) {
Merge(Array A, int p , int q, int r) { if(p < r){
n1 = q - p + 1; n2 = r - q; q = (p + r)/2;
criar_array(L); MergeSort(A, p, q);
criar_array(R); MergeSort(A, q+1, r);
for(i=1;i<=n1;i++) L[i] = A[p + i - 1]; Merge(A, p, q, r);
for(j=1;j<=n2;j++) R[j] = A[q + j]; }
L[n1 + 1] = ∞; }
R[n2 + 1] = ∞;
i = j = 1; 3 5 6 7 8 9 10 16
Exemplo:
for(k=p;k<=r;k++){ Entrada: 5 7 9 16 3 6 8 10
if(L[i]<=R[j]) { A[k] = L[i]; i++; } [ 16, 9, 7, 5, 10, 8, 3, 6 ]
else { A[k] = R[j]; j++; } Saída: 9 16 5 7 8 10 3 6
} [ 3, 5, 6, 7, 8, 9, 10, 16 ]
}
16 9 7 5 10 8 3 6
5
Algoritmos de Ordenação Algoritmos de Ordenação
Merge-Sort - Análise Considerando
Teorema 1 (Master Theorem): Sejam a ≥ 1 e b > 1 constantes, T (n ) = 2T (n / 2) + Θ( n),
seja f (n) uma função, e seja T (n) definida sobre os inteiros não
negativos pela recorrência
temos a = 2 , b = 2 e f(n) = Θ(n).
T (n) = aT (n / b) + f (n) Assim, com a aplicação do Teorema 1, temos
onde interpretamos n / b como ou n / b ou n / b . Então T (n) pode
T (n ) = Θ ( n log n)
ser limitada assintoticamente como segue.
1. Se f ( n) = O (n log a −ε ) para alguma constante ε > 0 , então
b
log n
T (n) = Θ(n log a ) .
b
Quicksort Quicksort
Quicksort Quicksort
Partition(A, p, r){
QuickSort(A, p, r) { x = A[r];
if(p < r){ i = p - 1:
q = Partition(A, p, r); for(j=p;j<r;j++){
QuickSort(A, p, q-1); if(A[j]<=x){
QuickSort(A, q+1, r); i++;
} trocar(A[i],A[j]);
} }
}
trocar(A[i+1],A[r]);
O algoritmo faz uso do procedimento Partition, como return i+1;
segue. }
6
Algoritmos de Ordenação Algoritmos de Ordenação
Algoritmos de Ordenação
Referências