Giter VIP home page Giter VIP logo

bubble-sort-e-busca-binaria-c's Introduction

Algoritmo de Ordenação Bubble Sort e Busca Binária em linguagem C

Este repositório contém implementações de dois algoritmos fundamentais em ciência da computação: Bubble Sort e busca binária, em linguagem C. Abaixo, uma breve descrição de cada algoritmo e como eles funcionam.

Bubble Sort

O Bubble Sort é um algoritmo de ordenação simples que compara repetidamente pares de elementos adjacentes em um vetor e os troca se estiverem fora de ordem. O processo é repetido até que nenhum par de elementos precise ser trocado.

// Definindo o Bubble Sort
void bubbleSort (int lista[], int tamanho){
  for (int i = 0; i < tamanho; i++){ // Loop externo para passar por todos os elementos
    for (int j = 0; j < tamanho - i - 1; j++){ // Loop interno para passar por todos os elementos menos o último
      if(lista[j] > lista[j + 1]) { // Comparando elementos adjacentes e trocando se estiverem na ordem errada
        int temp = lista[j]; // Troca o elemento com o posterior
        lista[j] = lista[j + 1]; // Troca o elemento com o posterior
        lista[j + 1] = temp; // Troca o elemento com o posterior
      }
    }
  }
}
  • Começa com o primeiro elemento do vetor e compara-o com o próximo elemento.

  • Se o primeiro elemento for maior que o próximo elemento, os dois elementos são trocados.

  • Esse processo de comparação e troca é repetido para cada par de elementos adjacentes no vetor, avançando de um extremo ao outro.

  • Após a primeira passagem completa pelo vetor, o maior elemento estará na última posição.

  • Em seguida, o processo é repetido para o sub-vetor restante (todos os elementos, exceto o último) para colocar o segundo maior elemento em sua posição correta.

  • O processo continua até que nenhum par de elementos precise ser trocado em uma passagem completa pelo vetor.

  • O vetor está agora ordenado, com os elementos em ordem crescente (ou decrescente, dependendo da implementação).

Busca Binária

A busca binária é um algoritmo de busca eficiente que opera em vetores ordenados. Ela divide o vetor pela metade e compara o elemento do meio com o valor desejado, ajustando o intervalo de busca de acordo com o resultado da comparação. O processo é repetido até encontrar o elemento ou determinar que ele está ausente.

// Definindo a busca binária
int buscaBinaria(int lista[], int tamanho, int numero) {
    int inicio = 0; // Índice inicial
    int fim = tamanho - 1; // Índice final

    // Loop enquanto a busca não estiver completa
    while (inicio <= fim) { // Continua enquanto o início for menor ou igual ao fim.
        int meio = (fim + inicio) / 2; // Calcula o índice do meio

        // Retorna o índice se o elemento for encontrado
        if (lista[meio] == numero)
            return meio; 

        if (lista[meio] < numero)
            inicio = meio + 1; // Busca na parte direita do vetor
        else
            fim = meio - 1; // Busca na parte esquerda do vetor
    }

    return -1; // O elemento não for encontrado
}
  • Inicialização: Começa com dois índices, inicio e fim, que representam o intervalo de busca. inicio é definido como o índice do primeiro elemento do vetor, e fim como o índice do último elemento.

  • Loop de Busca: Dentro de um loop, calcula o índice do elemento do meio, chamado de meio, que é a média entre inicio e fim.

  • Comparação: Compara o elemento no índice meio com o valor desejado (numero).

  • Casos de Comparação: Existem três casos possíveis:

  1. Se o elemento no índice meio for igual ao numero, o elemento foi encontrado, e o índice meio é retornado.
  2. Se o elemento no índice meio for menor que numero, atualiza inicio para meio + 1, continuando a busca na parte direita do vetor.
  3. Se o elemento no índice meio for maior que numero, atualiza fim para meio - 1, continuando a busca na parte esquerda do vetor.
  • Continuação da Busca: O loop continua até que inicio seja maior do que fim. Nesse ponto, se o elemento ainda não foi encontrado, é determinado que ele não está presente no vetor.
  • Resultado: Se o elemento é encontrado, a função retorna o índice onde o elemento foi encontrado. Caso contrário, retorna -1 para indicar que o elemento não está no vetor.

bubble-sort-e-busca-binaria-c's People

Contributors

matheusgodzilla avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.