Larback - Retornando conhecimento

Quantos livros você leu esse ano?

Ordenação pelo método Bolha (BubbleSort) em C++

O método de ordenação "bolha" é extremamente simples. Percorremos o vetor comparando as posições adjacentes (dois a dois). Toda vez que esses elementos estiverem fora do lugar, efetuamos a troca.
Para ser eficaz, o vetor deve ser percorrido N-1 (onde N é o tamanho do mesmo) vezes. Para melhorar seu desempenho, se nenhuma troca for efetuada (mesmo não tendo sido feita todas as repetições necessárias) podemos interromper o loop pois o vetor já está ordenado.

A função para ordenação é

void bolha(int vetor[], int tamanho) {
	int temp = 0;
	bool trocou = false;
	for (int i=tamanho-1;i>=1;i--){
		for (int j=1; j<tamanho; j++) {
			if (vetor[j]<vetor[j-1]){
				temp = vetor[j];
				vetor[j]=vetor[j-1];
				vetor[j-1]=temp;
				trocou = true;
			}
		}
		if (!trocou)
			break;
	}
}


E para os mais preguiçosos, segue um programa completo de exemplo

#include <iostream>
#include <cstdlib>
using namespace std;

void bolha(int vetor[], int tamanho) {
	int temp = 0;
	bool trocou = false;
	for (int i=tamanho-1;i>=1;i--){
		for (int j=1; j<tamanho; j++) {
			if (vetor[j]<vetor[j-1]){
				temp = vetor[j];
				vetor[j]=vetor[j-1];
				vetor[j-1]=temp;
				trocou = true;
			}
		}
		if (!trocou)
			break;
	}
}

void mostraVetor(int vet[]){
	for (int i=0;i<10;i++)
		cout << vet << " ";
}
// Programação principal
int main() {
	int vet[10];
	// inicializa o gerador de números randômicos para preenchermos o vetor com números aleatórios
	srand(time(NULL));
	for (int i=0;i<10;i++)
		vet= rand() % 100 + 1;
	
	cout << "O vetor foi preenchido aleatoriamente assim: " <<endl;
	mostraVetor(vet);
	cout << endl << endl << "Depois de ordenado: ";
	bolha(vet,10);
	mostraVetor(vet);
	
	return 0;
}


Qualquer dúvida, deixe um comentário.
Bons estudos