Vetor ordenado

414 palavras 2 páginas
Busca em vetor ordenado

Esta página estuda o seguinte problema básico: determinar se um dado número está ou não está em um dado vetor ordenado. Mais precisamente, dado um número x e um vetor crescente v[0..n-1],

encontrar um índice j tal que v[j] == x .

Vamos examinar dois algoritmos para o problema: um óbvio e lento e outro sofisticado e muito mais rápido.

Decisões de projeto

Comecemos por tornar o problema um pouco mais elaborado: vamos exigir que o algoritmo devolva j tal que

v[j-1] < x ≤ v[j] .

Assim, o usuário ficará sabendo onde x está — basta comparar x com v[j] — ou onde deveria estar. Para que a coisa fique completa, devemos permitir que j valha 0 ou n. Nesses casos a condição acima deve ser interpretada com inteligência: se j == 0 então a condição se reduz a

x ≤ v[0] ,

pois v[-1] não faz sentido; se j == n então a condição se reduz a

v[n-1] < x ,

pois v[n] não faz sentido. Tudo se passa como se nosso vetor tivesse um componente imaginário v[-1] com valor infinito negativo e um componente imaginário v[n] com valor infinito positivo.

No exemplo abaixo, se x vale 555 então o valor correto de j é 4. Se x vale 1000 então o valor correto de j é 13.

0 | | | | | | | | | | | |n-1 | |111 |222 |333 |444 |555 |555 |666 |777 |888 |888 |888 |999 |999 | |Precisamos tomar mais uma decisão de projeto: qual o menor vetor com que vamos nos preocupar? Suporemos sempre que

n ≥ 1,

pois isso torna o raciocínio mais simples. É verdade, entretanto, que o problema faz sentido mesmo quando n vale 0 (a solução do problema é necessariamente 0 nesse caso).

Busca sequencial

Comecemos com um algoritmo simples e óbvio:

int

busca( int x, int n, int v[]) {

int j = 0;

while (j < n && v[j] < x) ++j;

return j;

}

Quantas comparações de x com elementos de v essa função faz? A resposta é

n

Relacionados

  • Análise de performance de algoritmos de ordenação de dados
    3037 palavras | 13 páginas
  • java
    1045 palavras | 5 páginas
  • Estudante
    1297 palavras | 6 páginas
  • Pesquisa Sequencial E Bin Ria
    1416 palavras | 6 páginas
  • ALGORITMOS DE ORDENAÇÃO BUBBLE SORT e SELECTION SORT
    1379 palavras | 6 páginas
  • Algoritmos de ordenação de dados
    7415 palavras | 30 páginas
  • Metodos de ordenacao de dados em vetores
    7426 palavras | 30 páginas
  • Desenvolvimentos de algorítmos
    7426 palavras | 30 páginas
  • Ordenação de vetores pelo método Bubblesort
    530 palavras | 3 páginas
  • Trabalho Estrutura de Dados
    1571 palavras | 7 páginas