Pular para o conteúdo

Pesquisa Ternária em um vetor ordenado

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.
Giovanni Cândido da Silva giovannikenpachi
Hits: 11.073 Categoria: Java Subcategoria: Miscelânea
  • Download
  • Nova versão
  • Indicar
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Descrição

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.
Download pesquisaternaria.txt Enviar nova versão
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Esconder código-fonte

   /**
    * 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;

   }
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Gerador de números aleatórios em Java

Agenda eletrônica

Ordenação de vetores com letras do alfabeto

Leitor de Comandos

Torre de Hanoi

Nenhum comentário foi encontrado.

Contribuir com comentário

Entre na sua conta para comentar.