Programação e Desenvolvimento

Projetos, softwares, sites, blogs e trabalhos conforme sua necessidade e com os melhores preços.
Tecnologia do Blogger.

Text Widget

Search (Don't Edit)

Sample Text

Formulir Kontak

Nome

E-mail *

Mensagem *

Full-Width Version (true/false)

Flickr

Facebook

Translate

Video of the Day

Slider (Add Label Name Here!) (Documentation Required)

Teste Teste Teste

Know us

Teste Teste Teste Teste

Popular Posts

Featured

8 de dez de 2014

Busca Binária e Sequencial em C

Algoritmo consiste, em fazer uma busca tanto Sequencial quanto Binária em um vetor, preenchido e ordenado! Em um vetor de inteiros preenchidos automaticamente os números, o algoritmo mostra como é feito a busca, Sequencial é Binária, mostrando a quantia de comparações que cada busca realiza para encontrar o número fornecido pelo usuário!

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include<math.h>
#define T 250

int menu();
void inserir(int vet[]);
void exibir(int vet[]);
int buscaSequencial(int TAMANHO, int vet[], int valor);
int buscaBinaria(int n, int vet[], int elem);

int vetor[T];
main(){

int num, op;

double tempo_gasto;//tempo gasto
clock_t tempo_inicial = 0, tempo_final = 0;


inserir(vetor);

do{
op = menu();
switch(op){
case 1:
system("cls");
printf("\nBUSCA SEQUENCIAL\n");
printf("\nInforme um numero para Busca sequencial: ");
scanf("%d",&num);

tempo_inicial = clock();//tempo inicial

if(buscaSequencial(T, vetor, num)){
tempo_final = clock();
tempo_gasto = ( (double) (tempo_final - tempo_inicial) ) / CLOCKS_PER_SEC;
printf("\nTempo gasto para busca sequencial: %lf s\n", tempo_gasto);
}
else{
printf("\nNao foi encontrado nenhum elemento: ");

}

getch();
break;
case 2:

system("cls");
printf("\n\nBUSCA Binaria\n");
printf("\nInforme um numero para Busca Binaria: ");
scanf("%d",&num);
tempo_inicial = 0;
tempo_final = 0;
tempo_gasto = 0;
tempo_inicial = clock();//tempo inicial

if(buscaBinaria(T, vetor, num) > 0){
tempo_final = clock();
tempo_gasto = ( (double) (tempo_final - tempo_inicial) ) / CLOCKS_PER_SEC;
printf("\nTempo gasto para busca Binaria: %lf s\n", tempo_gasto);
}
else{
printf("\nNao foi encontrado nenhum elemento: ");

}
getch();
break;
case 3:
exibir(vetor);
getch();
break;
case 0:
break;
default:
printf("Opcao invalida\n");
break;
}
}while(op != 0);
    system("pause");
}
int menu(){
system("cls");
int op;
printf("1-Busca sequencial\n2-Busca Binaria\n3-Exibir Vetor\n0-sair\n");
scanf("%d",&op);
return op;
}

void inserir(int vet[]){
int x;

srand(time(NULL));
for(x = 0; x< T; x++){
vet[x] =  x;

}
}
void exibir(int vet[]){
int x;
for(x = 0; x< T; x++){
printf("%d\t",vet[x]);

}
}
int buscaSequencial(int TAMANHO, int vet[], int valor){
int i = 0, encontrado = 0;
int cont = 0;
while (i < TAMANHO && !encontrado) {
cont++;
if (vetor[i] == valor) {
encontrado = 1; /*Verdadeiro*/
printf("\nVerificou quntas vezes: %d",cont);
return encontrado;
}
else {
i++;
}
}
return encontrado;
}
int buscaBinaria (int n, int vet[], int elem){
/* no início consideramos todo o vetor */
int ini = 0;
int fim = n-1;
int cont = 0;
/* enquanto a parte restante for maior que zero */
while (ini <= fim) {
cont++;
int meio = (ini + fim) / 2;
if (elem < vet[meio]){
fim = meio-1;
}
// ajusta posição final */
else if (elem > vet[meio]){
ini = meio + 1; // ajusta posição inicial */
}

else{
printf("\nAchou");
printf("\nVerificou quantas Vezes: %d\n",cont);
return meio;
}
// /* elemento encontrado */
}
/* não encontrou: restou parte de tamanho zero */
return -1;
}


←  Anterior Proxima  → Inicio

Postagem em destaque

MVF5 System - SOLUÇÕES EM TI!

          Desenvolvimento de projetos, softwares, sites, blogs e trabalhos conforme sua necessidade e com os melhores preços. Entre em c...

Seguidores

Total de visualizações

Postagens populares