Pages

quinta-feira, 14 de janeiro de 2021

Como realizar uma busca Binária e Sequencial em C passo a passo usando vetores.

Atenção: Precisando de assessoria nos seus PROJETO entre em contato com a SGP

E-mail: ajudastrabalhosprogramacao@gmail.com

Whats: (15) 99704-0447


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 inicialif(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;
}




Atenção: Precisando de ajuda entre em contato com a SGP e solicite uma assessoria com melhor equipe do mercado no desenvolvimento de trabalhos acadêmicos

E-mail: ajudastrabalhosprogramacao@gmail.com

Facebook: fb.me/ajudaemTrabalhosdeprogramacao

0 comentários:

Postar um comentário

 
Copyright © 2023 2m Assessoria Academica todos os direitos reservados.
Contato para trabalhos: assessoria.academica2m@gmail.com - WhatsApp: (15) 98115 - 0680