Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida :D
Hoje à(s) 4:36 am Hoje à(s) 3:07 am Ontem à(s) 10:50 pm Ontem à(s) 4:25 pm Ontem à(s) 2:40 pm Ontem à(s) 7:53 am Ontem à(s) 7:51 am Qui Dez 05, 2019 6:36 pm Qui Dez 05, 2019 5:50 pm Qui Dez 05, 2019 3:22 pm Qua Dez 04, 2019 3:39 pm Qua Dez 04, 2019 3:14 pm Qua Dez 04, 2019 3:08 pm Qua Dez 04, 2019 3:02 pm Qua Dez 04, 2019 2:37 pm Qua Dez 04, 2019 1:34 pm Qua Dez 04, 2019 10:40 am Qua Dez 04, 2019 9:07 am Qua Dez 04, 2019 12:31 am Ter Dez 03, 2019 10:34 pm Ter Dez 03, 2019 8:09 pm Ter Dez 03, 2019 7:09 pm Ter Dez 03, 2019 6:55 pm Ter Dez 03, 2019 10:14 am Seg Dez 02, 2019 9:40 pm Seg Dez 02, 2019 4:33 pm Seg Dez 02, 2019 3:12 pm Seg Dez 02, 2019 2:35 pm Seg Dez 02, 2019 2:00 pm Dom Dez 01, 2019 8:21 pm Dom Dez 01, 2019 6:40 pm Dom Dez 01, 2019 2:32 pm Dom Dez 01, 2019 12:32 pm Sab Nov 30, 2019 9:18 pm Sab Nov 30, 2019 8:28 pm Sab Nov 30, 2019 5:52 pm Sab Nov 30, 2019 5:14 pm Sab Nov 30, 2019 1:34 pm Sex Nov 29, 2019 7:06 pm Sex Nov 29, 2019 4:41 pm Sex Nov 29, 2019 12:23 pm Sex Nov 29, 2019 11:56 am Qui Nov 28, 2019 10:42 pm Qui Nov 28, 2019 10:19 pm Qui Nov 28, 2019 8:38 pm Qui Nov 28, 2019 12:02 pm Qui Nov 28, 2019 4:21 am Qua Nov 27, 2019 11:44 am Qua Nov 27, 2019 11:42 am Qua Nov 27, 2019 12:41 am Ter Nov 26, 2019 3:58 pm Seg Nov 25, 2019 5:07 pm Seg Nov 25, 2019 10:46 am Seg Nov 25, 2019 8:57 am Seg Nov 25, 2019 1:23 am Seg Nov 25, 2019 1:09 am Dom Nov 24, 2019 7:16 pm Dom Nov 24, 2019 5:52 pm Dom Nov 24, 2019 12:46 pm Dom Nov 24, 2019 11:50 am Dom Nov 24, 2019 1:18 am Sab Nov 23, 2019 11:49 pm Sab Nov 23, 2019 10:15 pm Sab Nov 23, 2019 5:18 pm Sab Nov 23, 2019 4:50 pm Sab Nov 23, 2019 2:39 am Sab Nov 23, 2019 2:18 am Sab Nov 23, 2019 1:32 am Sab Nov 23, 2019 1:30 am Sex Nov 22, 2019 11:25 pm Sex Nov 22, 2019 3:43 pm Sex Nov 22, 2019 3:09 pm Sex Nov 22, 2019 10:17 am Sex Nov 22, 2019 10:02 am Qui Nov 21, 2019 10:48 pm Qui Nov 21, 2019 4:37 pm Qui Nov 21, 2019 4:27 pm Qui Nov 21, 2019 1:04 pm Qui Nov 21, 2019 9:12 am Qua Nov 20, 2019 11:36 pm Qua Nov 20, 2019 10:15 pm Qua Nov 20, 2019 9:40 pm Qua Nov 20, 2019 9:36 pm Qua Nov 20, 2019 9:31 pm Qua Nov 20, 2019 9:17 pm Qua Nov 20, 2019 7:56 pm Qua Nov 20, 2019 6:34 pm Qua Nov 20, 2019 2:28 pm Qua Nov 20, 2019 11:07 am Qua Nov 20, 2019 6:02 am Ter Nov 19, 2019 11:26 pm Ter Nov 19, 2019 10:42 pm Seg Nov 18, 2019 10:48 pm Seg Nov 18, 2019 4:13 pm Seg Nov 18, 2019 4:04 pm Seg Nov 18, 2019 3:01 pm Seg Nov 18, 2019 2:42 pm Seg Nov 18, 2019 10:37 am Seg Nov 18, 2019 4:37 am
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.
MayLeone
Instrutor
PONTOS : 1381 REPUTAÇÃO : 360 Áreas de atuação : Unity & C#Respeito as regras :
@NKKF escreveu:May, sempre tive essa dúvida: Como eu encontro quantos valores há em uma Array em C++?
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:
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
MayLeone
Instrutor
PONTOS : 1381 REPUTAÇÃO : 360 Áreas de atuação : Unity & C#Respeito as regras :