1) Busca por Índice
int[] vetor; // declaração do vetor
vetor = new int[10]; // alocação do vetor
// armazenando valores dentro do vetor
vetor [0] = 50;
vetor [1] = 150;
vetor [2] = 250;
vetor [3] = 350;
vetor [4] = 450;
vetor [5] = 550;
vetor [6] = 650;
vetor [7] = 750;
vetor [8] = 850;
vetor [9] = 950;
// imprimindo todos os valores do vetor
for (int i = 0; i < 10; i++)
Console.WriteLine("{0} {1}", i, vetor[i]);
Console.WriteLine();
// BUSCA POR ÍNDICE
// Dada a posição dentro do vetor (índice), basta retornar seu valor.
// Isso é feito instantâneamente.
Console.WriteLine("O valor que está na posição 2 é {0}", vetor[2]);
Console.ReadKey();
2) Busca por Valor Sequencial
int[] vetor; // declaração do vetor
int k; // indice da busca por valor
bool achou; // informa se já achou ou não o elemento
vetor = new int[10]; // alocação do vetor
// armazenando valores dentro do vetor
vetor [0] = 50;
vetor [1] = 150;
vetor [2] = 250;
vetor [3] = 350;
vetor [4] = 450;
vetor [5] = 550;
vetor [6] = 650;
vetor [7] = 750;
vetor [8] = 850;
vetor [9] = 950;
// imprimindo todos os valores do vetor
for (int i = 0; i < 10; i++)
Console.WriteLine("{0} {1}", i, vetor[i]);
Console.WriteLine();
// BUSCA POR VALOR SEQUENCIAL (o vetor não precisa estar ordenado)
// estamos procurando a posição em que se encontra o valor 450
achou = false; // você assume que o valor não está no vetor
k = 0; // o primeiro índice como sendo a primeira posição do vetor
while (k < 10 && ! achou) // enquanto não percorreu todos os elementos do vetor e não achou
{
if (vetor [k] == 450) // se a posição atual do vetor contém um valor igual ao valor buscado
achou = true; // marca que achou e sai do while
else
k++; // senão, incrementa o índice para continuar o while na próxima posição
}
if (achou)
Console.WriteLine("Valor {0} encontrado na posição {1}", 450, k);
else
Console.WriteLine("O valor {0} não existe no vetor", 450);
Console.ReadKey();
3) Busca por Valor Binária
int[] vetor; // declaração do vetor
bool achou; // informa se já achou ou não o elemento
int esquerda, direita, meio; // índices da busca binária
vetor = new int[10]; // alocação do vetor
// armazenando valores dentro do vetor
vetor [0] = 50;
vetor [1] = 150;
vetor [2] = 250;
vetor [3] = 350;
vetor [4] = 450;
vetor [5] = 550;
vetor [6] = 650;
vetor [7] = 750;
vetor [8] = 850;
vetor [9] = 950;
// imprimindo todos os valores do vetor
for (int i = 0; i < 10; i++)
Console.WriteLine("{0} {1}", i, vetor[i]);
Console.WriteLine();
// BUSCA POR VALOR BINÁRIA (o vetor precisa estar ordenado)
// É muito mais rápida que a busca sequencial
esquerda = 0; // a primeira posição do vetor
direita = 9; // a última posição do vetor
meio = (esquerda + direita) / 2; // posição do meio
achou = false;
while (esquerda <= direita && ! achou)
{
meio = (esquerda + direita) / 2; // posição do meio
Console.WriteLine("esquerda = {0}, direita = {1}, meio = {2}, valor atual = {3}", esquerda, direita, meio, vetor[meio]);
if (vetor [meio] == 850)
achou = true;
else
{
if (vetor [meio] < 850)
esquerda = meio + 1;
else
direita = meio - 1;
}
}
if (achou)
Console.WriteLine("Valor {0} encontrado na posição {1}", 850, meio);
else
Console.WriteLine("O valor {0} não existe no vetor", 850);
Console.ReadKey();
4) Inserção no Final
int[] original;
int[] temporario;
int n; // tamanho do vetor
int valor; // valor a ser inserido
n = 0;
original = new int[n];
temporario = new int[n];
do
{
Console.WriteLine("Digite um valor a ser inserido no vetor.");
Console.Write("Para parar de inserir valores no vetor, digite 0: ");
valor = int.Parse(Console.ReadLine());
if (valor > 0)
{
// ALGORITMO DE INSERÇÃO EM VETOR ESTÁTICO
// para alocar o vetor temporário, é necessário que N >= 1
if (n >= 1)
{
// alocando o vetor temporário
temporario = new int[n];
// copiando os dados do vetor original para o vetor temporário
for (int i = 0; i < n; i++)
temporario [i] = original [i];
}
// realocando vetor original
original = new int[n + 1];
// para copiar os dados do vetor temporário para o original, é necessário que N >= 1
if (n >= 1)
{
// copiando de volta os dados do vetor temporário para o vetor original
for (int i = 0; i < n; i++)
original [i] = temporario [i];
}
// valor digitado vai para a última posição
original [n] = valor;
// o vetor tem uma posição a mais
n++;
// imprimindo todas as posições do vetor para conferência
Console.WriteLine();
for (int i = 0; i < n; i++)
Console.WriteLine("{0} {1}", i, original [i]);
Console.WriteLine();
}
}
while (valor > 0);
Console.ReadKey();
5) Inserção Ordenada
int[] original; // vetor original
int[] temporario; // vetor temporario ou auxiliar
int n; // tamanho do vetor
int valor; // valor a ser inserido
int k;
n = 0;
original = new int[n];
temporario = new int[n];
do
{
Console.WriteLine("Digite um valor a ser inserido no vetor.");
Console.Write("Para parar de inserir valores no vetor, digite 0: ");
valor = int.Parse(Console.ReadLine());
if (valor != 0)
{
// ALGORITMO DE INSERÇÃO EM VETOR ESTÁTICO
// INSERE ORDENADAMENTE
// para alocar o vetor temporário, é necessário que N >= 1
if (n >= 1)
{
// alocando o vetor temporário
temporario = new int[n];
// copiando os dados do vetor original para o vetor temporário
for (int i = 0; i < n; i++)
temporario [i] = original [i];
}
// realocando vetor original
original = new int[n + 1];
// para copiar os dados do vetor temporário para o original, é necessário que N >= 1
if (n >= 1)
{
// 1) copiando os dados do vetor temporario para o vetor original
// enquanto os elementos forem menores do que o elemento a ser inserido
// OBS.: aqui foi utilizado o conceito de "shortcut", para testar o tamanho antes do valor do elemento
k = 0;
while (k < n && temporario[k] < valor)
{
original[k] = temporario[k];
k++;
}
// 2) inserindo na posição atual o valor que o usuário digitou
original[k] = valor;
// 3) copiando o restante do vetor temporario de volta para o vetor original
for (int i = k; i < n; i++)
original[i+1] = temporario[i];
}
else
original [n] = valor;
// o vetor tem uma posição a mais
n++;
// imprimindo todas as posições do vetor para conferência
Console.WriteLine();
for (int i = 0; i < n; i++)
Console.WriteLine("{0} {1}", i, original [i]);
Console.WriteLine();
}
}
while (valor != 0);
Console.ReadKey();
6) Remoção
int[] original;
int[] temporario;
int n;
int valor;
int k;
bool achou;
int j;
n = 10;
original = new int[n];
temporario = new int[0];
// armazenando valores dentro do vetor
original [0] = 50;
original [1] = 150;
original [2] = 250;
original [3] = 350;
original [4] = 450;
original [5] = 550;
original [6] = 650;
original [7] = 750;
original [8] = 850;
original [9] = 950;
// imprimindo todas as posições do vetor para conferência
Console.WriteLine();
for (int i = 0; i < n; i++)
Console.WriteLine("{0} {1}", i, original [i]);
Console.WriteLine();
do
{
Console.WriteLine("Digite um valor a ser removido do vetor.");
Console.Write("Para parar de remover valores, digite 0: ");
valor = int.Parse(Console.ReadLine());
// BUSCANDO ELEMENTO A SER REMOVIDO
achou = false; // você assume que o valor não está no vetor
k = 0; // o primeiro índice como sendo a primeira posição do vetor
while (k < n && ! achou) // enquanto não percorreu todos os elementos do vetor e não achou
{
if (original [k] == valor) // se a posição atual do vetor contém um valor igual ao valor buscado
achou = true; // marca que achou e sai do while
else
k++; // senão, incrementa o índice para continuar o while na próxima posição
}
if (achou)
{
Console.WriteLine("Valor {0} encontrado na posição {1}", valor, k);
// para alocar o vetor temporário, é necessário que N >= 1
if (n >= 1)
{
// alocando o vetor temporário
temporario = new int[n];
// copiando os dados do vetor original para o vetor temporário
for (int i = 0; i < n; i++)
temporario [i] = original [i];
}
// realocando vetor original
original = new int[n - 1];
// para copiar os dados do vetor temporário para o original, é necessário que N >= 1
if (n >= 1)
{
// copiando de volta os dados do vetor temporário para o vetor original
// pulando a posição k
j = 0;
for (int i = 0; i < n; i++)
{
if (i != k) // se a posição do vetor temporário for diferente da posição do elemento a ser removido
{
original [j] = temporario [i];
j++;
}
}
}
// o vetor tem uma posição a menos
n--;
// imprimindo todas as posições do vetor para conferência
Console.WriteLine();
for (int i = 0; i < n; i++)
Console.WriteLine("{0} {1}", i, original [i]);
Console.WriteLine();
}
else
{
Console.WriteLine("Impossível remover, valor {0} não existe no vetor", valor);
Console.WriteLine();
}
}
while (valor != 0);
Console.ReadKey();
7) Ordenação (Bubble Sort)
int[] vetor; // declaração
int tmp; // variável temporária usada somente na troca
int n;
n = 5; // número de elmentos do vetor
vetor = new int[n]; // alocação
// inicialização
vetor [0] = 4;
vetor [1] = 7;
vetor [2] = 10;
vetor [3] = 1;
vetor [4] = 5;
// imprimindo vetor inicial
Console.WriteLine("O vetor desordenado é: ");
for (int i = 0; i < n; i++)
Console.WriteLine("{0} {1}", i, vetor[i]);
// ALGORITMO DA BOLHA
for (int i = 0; i < n-1; i++) // ancorando N-1 elementos, começando em 0
{
for (int j = i + 1; j < n; j++) // percorrendo todos os elementos à direita da âncora
{
if (vetor [i] > vetor [j]) // valor da âncora é maior do que o valor atual à direita
{
// trocando os valores entre as duas posições
tmp = vetor [i];
vetor [i] = vetor [j];
vetor [j] = tmp;
}
}
}
// imprimindo vetor resultante
Console.WriteLine("O vetor ordenado é: ");
for (int i = 0; i < n; i++)
Console.WriteLine("{0} {1}", i, vetor[i]);
Console.ReadKey();