quinta-feira, 12 de março de 2015

Algoritmo de ordenação e pesquisa em C




Algoritmo para pesquisa e ordenação em Linguagem C.

Este projeto apresenta os quatro principais métodos de ordenação e pesquisa usados na computação. Foi desenvolvido em linguagem C.

métodos:
selecao Direta: este método compara cada elemento do vetor com o elemento da vez. Se for maior ele troca.

Buble Sort: este método compara o elemento da posiçao em questão com a posicao seguinte, se o próximo elemento for menor, então ele troca, e vai fazendo isso até o vetor ficar totalmente ordenado.

pesquisa sequencial: pesquisa elemento a elemento do vetor até encontrar, se encontrado, imprime o elemento, ou retorna, aí vai da preferência de cada um em adaptar o método. Se não encontrar ele imprime: não encontrado!

Pesquisa binária: melhor método, pois ele se coloca no meio do vetor e pergunta: o elemento é maior que meio? Se sim, o limite inferior passa a ser o meio +1. Se o elemento for menor que o meio, então limite superior recebe meio -1. Se nenhum dos dois é por que o elemento foi encontrado. Detalhe: este método só funciona se o vetor estiver devidamente ordenado! Ele é muito útil em casos de pesquisa com lista gigantesca de números, pois ele vai excluindo metades em metades até achar o elemento desejado, ao invés de percorrer elemento a elemento!

#include <conio2.h>
#include <stdlib.h>
#include <stdio.h>
#define MAX 10

/**
======================== Ordenacao e pesquisa ================================
**/
// selecao direta
void selecaoDireta(int n, int vet[]){
    int i, j, aux, posicao;
    for(i=0; i<n-1; i++){
        posicao = i;
        for(j= i+1; j<n; j++){
            if(vet[j]<vet[posicao])
                posicao = j;
        }
        aux = vet[posicao];
        vet[posicao] = vet[i];
        vet[i] = aux;
    }
}

// bolha
void bublleSort(int n, int vet[]){
    int i, aux, trocou;
    do{
        trocou = 0;
        for(i=0; i<n-1; i++){
            if(vet[i]>vet[i+1]){
                aux = vet[i];
                vet[i] = vet[i+1];
                vet[i+1] = aux;
                trocou = 1;
            }
        }
        n--;
    }while(trocou);
}

void imprimeVet(int n, int vet[]){
    int i;
    printf("\n\nvetor ordenado: \n\n");
    for(i=0; i<n; i++){
        printf("%d \n",vet[i]);
    }
}

void mostraElemento(int elemento){
    printf("\n\nElemento encontrado: %d\n\n",elemento);
}

//pesquisa sequencial
void pesquisaSequencial(int n, int elemento, int vet[]){
    int i=0, achou=0;
    while(i<=n && achou==0){
        if(vet[i]==elemento){
            achou = 1;
            mostraElemento(vet[i]);
            break;
        }
        else
            i++;
    }
    if(achou==0)
        printf("\n\nnao encontrado!\n\n");
}

// pesquisa binaria
void pesquisaBinaria(int limSuperior, int elemento, int vet[]){
    int limInferior=0, achou=0, meio;
    while(limInferior<=limSuperior && achou==0){
        meio = (limInferior + limSuperior)/2;
        if(elemento>vet[meio])
            limInferior = meio+1;
        else if(elemento<vet[meio])
            limSuperior = meio-1;
        else{
            achou = 1;
            printf("\n\nelemento encontrado: %d\n\n",vet[meio]);
            break;
        }
    }
    if(achou==0)
        printf("\n\nElemento nao encontrado!\n\n");
}

int main() {
   int vet[MAX] = {3, 4, 10, 8, 5, 4, 2, 7, 9, 11};
   selecaoDireta(MAX, vet);
   bublleSort(MAX, vet);
   imprimeVet(MAX, vet);
   pesquisaSequencial(MAX, 18, vet);
   pesquisaBinaria(MAX, 19, vet);


  return 0;
}

About the Author

Unknown

Author & Editor

Has laoreet percipitur ad. Vide interesset in mei, no his legimus verterem. Et nostrum imperdiet appellantur usu, mnesarchum referrentur id vim.

Postar um comentário

 
Academy Programming © 2015 - Designed by Templateism.com