[TUTORIAL] Bubble Sort - Algoritmo
4 participantes
SchultzGames :: UNITY 3D :: C# .NET
Página 1 de 1
[TUTORIAL] Bubble Sort - Algoritmo
Você já ouvir falar sobre a técnica Bubble Sort?
Bubble Sort (ou ordenação em bolha) é um algoritmo de ordenação numérica que consiste em reorganizar os valores de uma coleção (normalmente arrays) de forma que os mesmos sejam reposicionados em ordem decrescente de acordo com o índice da coleção.Em linguagens de programação como o C# por exemplo, temos funções de ordenação através de LINQ, assim como é feito com dados de tabelas em SQL (vide função OrderBy), mas não deixa de ser interessante estudar este algoritmo de ordenação para fins didáticos e treinar a lógica, mesmo porque, conhecer novos algoritmos e técnicas, nunca é demais.
Como funciona?
O algoritmo consiste em apenas ''trocar'' os valores de um array, de forma que os maiores valores ocupem os primeiros índices, fazendo com que os menores, obviamente, vão ficando por último na indexação.Graficamente falando, podemos ter como exemplo a seguinte situação (um array de inteiros):
Veja que ao final do processo o array está devidamente ordenado de forma decrescente, assim o maior valor ocupa o primeiro índice, e o menor valor ocupa o último índice da coleção.
Em programação:
Para realizar essa "troca" de valores dentro do array, primeiramente precisamos criar um laço de repetição que percorra toda a coleção, e a validação a ser feita dentro deste laço deve ocorrer sempre entre o elemento atual do laço e o elemento do índice sucessor, como foi feito no exemplo gráfico, onde trocamos os elementos sucessores se estes forem maiores que o elemento anterior.Para realizar essa validação, deve ser criado outro laço de repetição que tenha um limite menor que o tamanho do array atual, assim evitamos que seja extrapolado o último elemento, ao verificar seu sucessor, que na verdade não há.
Quando se é verificado que o sucessor no array é maior que seu antecessor, realize-se a 'troca', ou seja, o maior valor passa a ocupar o índice de seu antecessor e o menor valor vai para o índice de seu sucessor. Para tal, basta criar uma variável temporária que armazene o valor do elemento do índice atual (para que ele não se perca), e o índice atual recebe o valor de seu sucessor, e o sucessor receba o valor da variável temporária.
Exemplo em C++
Exemplo em C#
Veja que através do output do array podemos visualizar como a coleção ficou ordenada de forma decrescente:
Claro que se você quiser ordenar o array em ordem crescente, basta trocar o sinal da validação do menor (<) para maior (>):
(saída em output do array em ordem crescente)
Os exemplos neste artigo foram feitos nas linguagens em C++ e C#, mas qualquer linguagem de programação que suporte arrays pode realizar a técnica do Bubble Sort.
Re: [TUTORIAL] Bubble Sort - Algoritmo
May, sempre tive essa dúvida: Como eu encontro quantos valores há em uma Array em C++?
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Bubble Sort - Algoritmo
Interessante...
Com isso posso enumerar itens de um inventário para deixá-lo em ordem alfabética, certo?
Com isso posso enumerar itens de um inventário para deixá-lo em ordem alfabética, certo?
Nalfam- MembroAvançado
- PONTOS : 2435
REPUTAÇÃO : 32
Áreas de atuação : Unity
Respeito as regras :
Re: [TUTORIAL] Bubble Sort - Algoritmo
Nalfam escreveu:Interessante...
Com isso posso enumerar itens de um inventário para deixá-lo em ordem alfabética, certo?
Da, mas acredito eu que em C# já exista algum método pronto para ordenar strings em ordem alfabética.
Fiz um tutorial sobre esse algoritmo que a May postou a um booom tempo atrás:
Link, caso interesse a alguém :D
Re: [TUTORIAL] Bubble Sort - Algoritmo
Nossa! Muito interessante mesmo!!MarcosSchultz escreveu:Nalfam escreveu:Interessante...
Com isso posso enumerar itens de um inventário para deixá-lo em ordem alfabética, certo?
Da, mas acredito eu que em C# já exista algum método pronto para ordenar strings em ordem alfabética.
Fiz um tutorial sobre esse algoritmo que a May postou a um booom tempo atrás:
Link, caso interesse a alguém :D
Apesar de ser o mesmo algoritmo, é sempre bom ver outras explicações.
Nalfam- MembroAvançado
- PONTOS : 2435
REPUTAÇÃO : 32
Áreas de atuação : Unity
Respeito as regras :
Re: [TUTORIAL] Bubble Sort - Algoritmo
Bom, pra obter o tamanho do array em cpp igual a gente faz em C# (como o ''.Length''), vc precisa utilizar o operador sizeof e dividir pelo ponteiro do sizeof do array, assim:NKKF escreveu:May, sempre tive essa dúvida: Como eu encontro quantos valores há em uma Array em C++?
- Código:
int myVector[10];
int length = sizeof(myVector)/sizeof(*myVector);
O retorno de 'length' nesse exemplo vai ser 10.
Pra usar no laço de repetição igual fazemos no C#, basta fazer assim, por exemplo:
- Código:
#include <iostream>
int main()
{
int a[5] = {1, 2, 3, 4, 5};
int arrayLength = sizeof(a)/sizeof(*a);
for (int i = 0; i < arrayLength; i++){
std:: cout << a[i] << std:: endl;
}
return 0;
}
@Nalfam:
Como disse o Marcos, existem formas alternativas para ordenação alfabética, mesmo porque o Bubble Sort é útil para ordenação numérica.
No caso de uma ordenação alfabética, recomendo que utilize a biblioteca LINQ que tem várias funções de ordenação, muito parecidas com o que temos em SQL.
Um artigo interessante sobre LINQ, eu recomendo este aqui: https://www.devmedia.com.br/introducao-ao-linq/22769
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Tópicos semelhantes
» Alguém conhece algum bom tutorial para aprender Algoritmo genético em C# ?
» Elaborei a lógica, mas não faço ideia de como será o algoritmo??? HELP
» [TUTORIAL] Introdução para iniciante e tutorial de Click move com raycast
» [TUTORIAL] Tutorial criar game framework/engine do zero com JWJGL Java
» [TUTORIAL] Como spawnar inimigos [Tutorial simples]
» Elaborei a lógica, mas não faço ideia de como será o algoritmo??? HELP
» [TUTORIAL] Introdução para iniciante e tutorial de Click move com raycast
» [TUTORIAL] Tutorial criar game framework/engine do zero com JWJGL Java
» [TUTORIAL] Como spawnar inimigos [Tutorial simples]
SchultzGames :: UNITY 3D :: C# .NET
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos