Classificação de balde C ++

Classificação de balde C ++

Classificação é um método pelo qual pedimos os itens em uma sequência. O tipo de balde é um dos algoritmos de classificação, mas esse algoritmo é um pouco diferente dos outros algoritmos. Um balde, como o nome indica, contém algo em um espaço separado como um contêiner. Este algoritmo coloca os elementos no balde de acordo com a condição. Os elementos são divididos em diferentes baldes e a classificação é realizada em cada balde. Podemos decidir qual algoritmo é usado para classificar os baldes. Os outros nomes para classificar o balde são classificação e tipo de radix. O agrupamento de elementos a serem armazenados em baldes é feito uniformemente. O tipo de balde é o algoritmo que é bom com pequenas matrizes. Mas quando se trata de classificar as matrizes maiores, esse algoritmo não é preferido porque a complexidade aumenta e o desempenho diminui. Esse algoritmo é aplicado principalmente nos valores de ponto flutuante, onde precisamos agrupar uniformemente os elementos da matriz.

Vantagens:

O uso da classificação do balde na programação tem alguns benefícios:

  • É rápido por causa da distribuição uniforme.
  • O número de comparações é menor do que em outras técnicas de classificação.

O tipo de balde é preferido quando precisamos distribuir os dados e quando você está lidando com valores de ponto flutuante.

Abordagem de dispersão e colador

A classificação do balde funciona na abordagem de dispersão e coleta. Primeiro espalha os elementos no balde uniformemente. Uma vez que eles são classificados no balde, eles são reunidos em um só lugar e classifica a matriz. Essa técnica nos salva da comparação de cada elemento da matriz entre si que aumenta a complexidade e torna o processo de compilação lento.

A classificação do balde classifica as matrizes dividindo os elementos da matriz em baldes. Cada balde é então armazenado em um local separado. O processo de armazenamento pode ser feito usando diferentes técnicas ou algoritmos ou aplicando recursivamente o algoritmo de classificação do balde.

Exemplo:

Agora, explicamos o funcionamento da classificação do balde com a ajuda de um exemplo. Diferentes métodos são empregados para a classificação e distribuição das matrizes.

#incluir
#incluir
#incluir
usando namespace std;
Void Bucketsort (Float Array_0 [], int n)
vetor B [n];
para (int i = 0; i< n; i++)
int bi_0 = n * array_0 [i];
B [Bi_0].push_back (array_0 [i]);

para (int i = 0; i< n; i++)
classificar (B [i].BEGIN (), B [i].fim());
int index = 0;
para (int i = 0; i< n; i++)
for (int j = 0; j < b[i].size(); j++)
Array_0 [index ++] = b [i] [j];

int main ()
float arr [] = 0.7, 0.5, 0.6, 0.65, 0.4;
int n = sizeof (arr) / sizeof (arr [0]);
Bucketsort (arr, n);
cout<< "Sorted array is \n";
para (int i = 0; i< n; i++)
cout<retornar 0;

Primeiro de tudo, inclua as três bibliotecas importantes -, e . A biblioteca contém todos os métodos para classificar e pesquisar. Como classificaremos a matriz de valores de ponto flutuante, é obrigatório incluir esta biblioteca no código. Depois disso, inclua a biblioteca que contém todos os métodos internos que precisamos inserir e produzir os dados. A terceira e última biblioteca é . O vetor é como uma matriz, mas contém um tamanho variável. Os vetores podem alterar o tamanho de uma matriz em tempo de execução; Essa é a especialidade deles. Como usamos os vetores em nosso código, é importante importar uma biblioteca que inclua o vetor.

Depois de importar essas bibliotecas, use o “namespace std”. Além disso, defina um método chamado "BucketSort" do tipo de retorno vazio. Passe dois parâmetros nele. O primeiro parâmetro é a matriz do tipo float "Array_0", que é classificada usando o tipo de balde. O segundo parâmetro é uma variável do tipo inteiro "n". Em seguida, defina uma matriz vetorial do tipo de dados de ponto flutuante. A matriz é "b" de tamanho "n". Uma matriz do tipo vetorial é utilizada porque o tamanho da matriz é desconhecido. Agora, adicione os elementos em diferentes baldes usando o loop "for". Declare o iterador "i" e depois defina a condição para fazer loop até que o iterador atinja o número de elementos na matriz. O atributo "n" mostra o tamanho da matriz que é desconhecido. Observamos como obter o tamanho de uma matriz no método main (). Incremento o iterador "i". Defina uma variável no loop "para" cujo tamanho "n" é multiplicado pelos valores da matriz que são armazenados no iterador.

Na matriz vetorial, empregue a função push_back () para empurrar esse elemento de matriz. Depois de empurrar a matriz em baldes, classifique esses baldes usando outro loop "para". Inicialize o iterador do loop e itera até atingir o tamanho e continuar incrementando o loop. Classifique a matriz no corpo de "for" chamando o método stor () da biblioteca de algoritmo. Passe dois parâmetros dentro desta função. O primeiro argumento mostra o índice inicial da matriz e o segundo argumento mostra o índice final da matriz. A função BEGN () inicia a classificação e a função final () para no último índice. Declare uma variável fora do corpo de "for" para obter o índice. Use o loop "para" aninhado para combinar os elementos da matriz após classificar em baldes separados.

Além disso, chame o método main (). Aqui, declare uma matriz de ponto flutuante "arr" e inicialize. Em seguida, defina um número inteiro "n" para obter os itens da matriz. A função sizeof (arr) recebe o tamanho de uma matriz em bytes. Ele multiplica o tamanho com 10 e o método Sizeof (arr [0]) obtém o tamanho de apenas um elemento. Ao dividir os dois, podemos adquirir os componentes totais da matriz. Agora, invocar o método bucketsort (). Esta função classifica a matriz aplicando o algoritmo de classificação do balde. Representar uma mensagem de "matriz classificada é" no console usando o comando "cout". Para exibir a matriz classificada, use o loop "for" e defina a condição para o número de elementos da matriz. Use "cout" no corpo de "for" para mostrar a matriz atualizada.

Conclusão

Discutimos o trabalho e a implementação do tipo de balde em C++. Como o nome é auto-explicativo, ele divide a matriz e os armazena no balde. Depois de classificar a matriz, todos os baldes são combinados em uma sequência. Esse tipo de balde é preferido quando lidamos com valores de ponto flutuante porque divide os baldes com base em diferentes condições e é usado para distribuir os dados uniformemente. O artigo contém todas as informações que você deve saber antes de implementar o tipo de balde. Algumas técnicas e algoritmos de classificação diferentes são usados ​​para classificar a matriz; Todos os métodos têm prós e contras. O que esse método tem é o ponto positivo de que é rápido e classifica a matriz com comparação mínima. Mas quando temos uma grande variedade, o tipo de balde não é uma boa opção. O artigo resume aqui com uma breve visão geral do tipo de balde.