Skip to content

Instantly share code, notes, and snippets.

@RafaelPlantard
Created May 20, 2020 02:54
Show Gist options
  • Save RafaelPlantard/2a1a9a3cd23dbde4c5243e60eef380cd to your computer and use it in GitHub Desktop.
Save RafaelPlantard/2a1a9a3cd23dbde4c5243e60eef380cd to your computer and use it in GitHub Desktop.
Bubble Sort
#include <stdio.h>
/*
int* lhs: ponteiro de int
int* rhs: pointeiro de int
*/
void swap(int* lhs, int* rhs) {
// primeiramente a função armazena o valor que está contido no ponteiro do primeiro argumento (lhs)
// isso permite que possamos alterar o valor contido pelo ponteiro *lhs sem perder o valor original que estava em *lhs.
int aux = *lhs;
// Uma vez salvo o valor de *lhs em uma variável auxiliar, podemos simplesmente fazer a troca.
// Primeiramente pegamos o valor que está no ponteiro rhs, e atualizamos o valor de lhs, usando o operador * para pegar o valor da variável
// Do contrário estaríamos atualizando os ponteiros e não os seus valores.
*lhs = *rhs;
// Fazemos a recuperação do valor de aux que contém o valor original que estava em *lhs antes da troca, e com isso
// atualizamos a varíavel *rhs concluindo a troca dos valores que estavam nos 2 ponteiros:
// lhs -> aux
// rhs -> lhs
// aux -> rhs
*rhs = aux;
}
/*
int vec[]: um vetor de inteiros
int size: tamanho do vetor de inteiros passado no 1º parâmetro
*/
void bubbleSort(int vec[], int size)
{
// variáveis auxiliares dos 2 fors.
int i, j;
// primeiramente for é para percorrer todos os itens do vetor.
for (i = 0; i < size - 1; i++)
{
// percorre o vetor até o final a partir da próxima posição de i atual
for (j = i + 1; j < size; j++)
{
// se a posição atual de i do vetor for maior que a próxima posição (representada por j), então é efetuada a troca.
if (vec[i] > vec[j])
{
// troca as posições baseadas nos ponteiros.
swap(&vec[i], &vec[j]);
}
}
}
}
void print(int vec[], int size) {
for (int i = 0; i < size; i++) {
printf("%d, ", vec[i]);
}
printf("\n");
}
int main() {
int vec[] = {6, 2, 1, 4, 3, 7, 9, 8, 5, 10};
int size = sizeof(vec) / sizeof(int);
print(vec, size);
bubbleSort(vec, size);
print(vec, size);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment