Skip to content

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

Notifications You must be signed in to change notification settings

MatheusGODZILLA/bubble-sort-e-busca-binaria-C

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

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.

About

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

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages