Você está na página 1de 2

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ArvoreB
{
class Program
{
static void Main(string[] args)
{
int[] vetor = { 1, 2, 3, 5, 7, 11, 14, 16, 21, 22, 23, 27, 27, 30, 3
2, 33, 35, 47, 50, 53, 55 };
int binaria_posBusca = 0, interpolacao_posBusca = 0;
int binaria_iteracoes = 0, interpolacao_interacoes = 0;
int valorBusca = 2;
string saida = "";
for (int i = 0; i < vetor.Length; i++)
saida += "v[" + i + "] = " + vetor[i] + "\n";
//Busca binaria;
binaria_posBusca = buscaBinaria(vetor, 0, vetor.Length - 1, valorBus
ca, ref binaria_iteracoes);
//Busca por interpolaao;
interpolacao_posBusca = buscaInterpolacao(vetor, 0, vetor.Length - 1
, valorBusca, ref interpolacao_interacoes);
System.Console.WriteLine("+Vetor\n" + saida);
System.Console.WriteLine("+Realizar busca\nValor: " + valorBusca);
System.Console.WriteLine("\n+Mtodo de busca binria");
System.Console.WriteLine("Posio: {0}, iteraes: {1} ", binaria_posBusca,
binaria_iteracoes);
System.Console.WriteLine("\n+Mtodo de busca por Interpolao");
System.Console.WriteLine("Posio: {0}, iteraes: {1} ", interpolacao_posBu
sca, interpolacao_interacoes);

}
static int buscaBinaria(int[] vetor, int inf, int sup, int valor,ref int
iteracoes)
{
//indentifica overflow
if (inf > sup) return -1;
int meio = (int)(inf + sup) / 2;
iteracoes++;
if (vetor[meio] == valor)
return meio;
else
{
if (vetor[meio] < valor)
return buscaBinaria(vetor, meio + 1, sup, valor,ref iteracoe
s);
else
return buscaBinaria(vetor, inf, meio - 1, valor,ref iteracoe
s);
}
}
static int buscaInterpolacao(int[] vetor, int inf, int sup, int valor, r
ef int iteracoes)
{
//indentifica overflow
if (inf > sup) return -1;
int meio = (int)inf + ((sup - inf) * ((valor - vetor[inf]) / (vetor[
sup] - vetor[inf])));
iteracoes++;
if (vetor[meio] == valor)
return meio;
else
{
if (vetor[meio] < valor)
return buscaInterpolacao(vetor, meio + 1, sup, valor, ref it
eracoes);
else
return buscaInterpolacao(vetor, inf, meio - 1, valor, ref it
eracoes);
}
}
}
}

Você também pode gostar