sexta-feira, 10 de agosto de 2012

O método BinarySearch permite com que dois arrays possam ser filtrados.
Neste exemplo, vou mostrar como funciona esse método usando dois tipos de arrays, declarados como "funcionarios" e "salarios".


string[] funcionarios = { "Maria", "Pedrinho", "Joaozinho", "Zezinho" };
decimal[] salarios = { 1500.33m, 2300.42m, 1700.87m, 2000.00m };

O que queremos com isso, é que o primeiro item do vetor funcionarios, tenha o salario do primeiro item do vetor salarios, e assim respectivamente.
Vamos declarar agora, uma variável que guardará o nome do funcionário que queremos localizar.

string nome = "Joaozinho";



Precisamos agora, declarar um índice, para localizarmos os itens dentro do vetor salarios e atribuirmos a ele o método BinarySearch.

int i;
// localizamos em funcionarios o valor de variavel nome.
i = Array.BinarySearch(funcionarios, nome);
// i = 3, pois Joaozinho está na posição 3 do vetor funcionarios


Agora, basta atribuirmos a uma outra variavel do mesmo tipo da variavel salarios para localizar o valor do indice i.


// procura em salarios o valor de i (3)
decimal procurar = salarios[i];


Há um problema em relação a isto, pois o BinarySearch só funciona se os itens do vetor estiverem em ordem crescente, neste caso, em ordem alfabética. Para resolver este problema, utilizamos o método Sort do Array.


Array.Sort(funcionarios, salarios);


Desta forma, ele organiza em ordem alfabética o vetor funcionarios e deixa os valores do vetor salarios na mesma posição.

Pronto! Basta mandar escrever o resultado.

Código completo:


int i;
string[] funcionarios = { "Maria", "Pedrinho", "Joaozinho", "Zezinho" };
decimal[] salarios = { 1500.33m, 2300.42m, 1700.87m, 2000.00m };
string nome = "Joaozinho";

Array.Sort(funcionarios,salarios);
i = Array.BinarySearch(funcionarios, nome);
decimal procurar = salarios[i];

Console.WriteLine(nome + " recebe " + procurar + " reais.");
Console.ReadKey();

Abraços e até a proxima.

Categories: ,

0 comentários:

Postar um comentário