Pesquisa Ternária em um vetor ordenado
Publicado por Giovanni Cândido da Silva 24/06/2009
[ Hits: 10.950 ]
Homepage: http://giovannicandido.wordpress.com
O algoritimo de pesquisa binária divide o vetor sucessivamente em duas partes, e utiliza a mesma
lógica porém dividindo o vetor em 3 partes.
/**
* Divide um vetor em 3 partes sucessivamente em busca de um elemento
* Retorna -1 caso o elemento não exista no vetor, ou o indice do elemento
* @param x
* @return
*/
public int pesquisaTer(int x){
int meio1, meio2;
int esq = 0;
int dir = arranjo.length-1;
do{
//Calcula a primeira parte do vetor evitando estrapolação
meio1=(dir - esq)/3 + esq;
//Calcula a segunda parte do vetor evitando que
meio2=((dir-esq)/3)*2 + esq;
//Caso o arranjo esteja em um dos meios encerra o metodo e retorna a posição
if(x==arranjo[meio1])
return meio1;
if(x==arranjo[meio2])
return meio2;
//Atualiza os indices esq e dir caso nao seja encontrado o elemento
if(x<arranjo[meio1]){
dir=meio1-1;
}
if (x>arranjo[meio1] && x< arranjo[meio2]){
esq=meio1+1;
dir=meio2 -1;
}
else if(x>arranjo[meio2]){
esq=meio2+1;
}
}while(esq<=dir);
return -1;
}
Código para validar CPF e CNPJ otimizado
Script para cálculo de distâncias na superfície terrestre utilizando coordenadas geográficas
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Consertando o áudio com estalos e interrupções no Pipewire
Fiz uma pergunta no fórum mas não consigo localizar (5)
Servidor Ubuntu 24.04 HD 500 não tenho espaço na \home\adminis... (4)
Dá para criar um bom jogo usando a linguagem de programação C? (1)
E como programar um sistema operacional inspirado no próprio linux usa... (3)









