Classificação da pilha C ++

Classificação da pilha C ++

Como sabemos, a linguagem C ++ tem muitos algoritmos de classificação para classificar estruturas semelhantes a matrizes. Uma dessas técnicas de classificação é o tipo de heap. É bastante popular entre os desenvolvedores de C ++, porque é considerado o mais eficiente quando se trata de funcionar. É um pouco diferente de outras técnicas de classificação, porque requer as informações das árvores de estrutura de dados junto com o conceito de matrizes. Se você já ouviu e aprendeu sobre árvores binárias, aprender o tipo de pilha não será mais um problema para você.

Dentro da classificação, dois tipos de pilhas podem ser gerados, eu.e., Min-heap e Max-heap. O Max-heap classificará a árvore binária em ordem decrescente, enquanto o min-heap classificará a árvore binária em ordem ascendente. Em outras palavras, o heap será "max" quando o nó pai de uma criança for maior em valor e vice -versa. Então, decidimos escrever este artigo para todos os usuários ingênuos de C ++ que não têm conhecimento prévio sobre classificação, especialmente o tipo de heap.

Vamos começar o tutorial de hoje com o Ubuntu 20.04 Login para obter acesso ao sistema Linux. Após o login, use o atalho “Ctrl+Alt+T” ou a área de atividade para abrir seu aplicativo de console chamado “Terminal.”Temos que utilizar o console para fazer um arquivo para implementação. O comando para a criação é uma instrução simples de “toque” de uma palavra seguindo o novo nome para um arquivo a ser criado. Temos nomeado nosso arquivo C ++ como “Heap.CC ”. Após a criação de arquivos, você precisa começar a implementar os códigos nele. Para isso, você deve abri -lo primeiro através de alguns editores do Linux. Existem três editores internos do Linux que podem ser usados ​​para esse fim, eu.e., nano, vim e texto. Estamos usando o editor "GNU Nano".

Exemplo # 01:

Estaremos explicando um programa simples e bastante claro para o tipo de heap para que nossos usuários possam entender e aprender bem. Use o espaço para nome e biblioteca C ++ para entrada de entrada no início deste código. A função heapify () será chamada por uma função "Sort ()" para ambos os seus loops. O primeiro loop "for" chama Pass It Array "A", n = 6, e raiz = 2,1,0 (em relação a cada iteração) para construir uma pilha reduzida.

Usando o valor raiz a cada vez, obteremos o valor variável “maior” é 2,1,0. Em seguida, calcularemos os nós da árvore "L" e direita "R" da árvore usando o valor "raiz". Se o nó esquerdo for maior que "raiz", o primeiro "se" atribuirá "l" ao maior. Se o nó direito for maior que a raiz, o segundo "se" atribuirá "r" ao maior. Se "maior" não for igual ao valor "raiz", o terceiro "se" trocará o "maior" valor variável com "root" e chama a função heapify () nele, i i.e., Chamada recursiva. O processo inteiro acima explicado também será usado para a pilha máxima quando o segundo loop "para" for iterado na função de classificação.

A função "Sort ()" mostrada "Sorning () será chamada para classificar os valores da matriz" A "em ordem ascendente. O primeiro loop "for" está aqui; Construa uma pilha, ou você pode dizer que a matriz de reorganização. Para isso, o valor de "i" será calculado por "n/2-1" e decrementado a cada vez após a chamada da função heapify (). Se você tiver um total de 6 valores, ele se tornará 2. Um total de 3 iterações será executado e a função heapify será chamada 3 vezes. O próximo loop "for" está aqui para mover a raiz atual para o final de uma matriz e chamar a função Heapify 6 vezes. A função Swap levará o valor ao índice de iteração atual "a [i]" de uma matriz com o primeiro valor de índice "a [0]" de uma matriz. A função heap () será chamada para gerar o monte máximo no monte reduzido já gerado, i.e., “2,1,0” no primeiro loop “para”.

Aí vem nossa função "Display ()" para este programa que está tomando uma matriz e o número de elementos do código do driver principal (). A função "display ()" será chamada duas vezes, eu.e., Antes de classificar para exibir a matriz aleatória e depois de classificar para mostrar a matriz classificada. Ele é iniciado com o loop "for" que usará a variável "n" para o último número de iteração e começa a partir do índice 0 de uma matriz. O objeto C ++ "cout" é usado para exibir cada valor de matriz "A" em todas as iterações enquanto o loop continua. Afinal, os valores para a matriz “A” serão exibidos no shell um após o outro, separados um do outro por um espaço. Por fim, o intervalo da linha será inserido usando o objeto "cout" mais uma vez.

Este programa começará a partir da função principal () como C ++ sempre tende a executar a partir dele. No início de nossa função principal (), a matriz inteira “A” foi inicializada com um total de 6 valores. Todos os valores são armazenados em uma ordem aleatória dentro da matriz a. Tomamos o tamanho da matriz "A" e o tamanho do primeiro valor de índice "0" da matriz A para calcular o número total de elementos em uma matriz. Esse valor calculado será armazenado em uma nova variável "n" do tipo inteiro. A saída padrão C ++ pode ser exibida com a ajuda de um objeto “Cout.”

Então, estamos utilizando o mesmo objeto "cout" para exibir a mensagem simples "Matriz original" no shell para que nossos usuários saibam que a matriz original não classificada será exibida. Agora, temos uma função "Display" definida pelo usuário neste programa que será chamado aqui para exibir a matriz original "A" no shell. Passamos por nossa matriz original e a variável "n" nos parâmetros. Depois de exibir a matriz original, estamos utilizando a função Sort () aqui para organizar e reorganizar nossa matriz original em ordem ascendente usando o tipo de heap.

A matriz original e a variável "n" são passadas para ela nos parâmetros. A próxima declaração "cout" é usada para exibir a mensagem "Matriz classificada" após o uso de uma função de "classificação" para classificar a matriz "A.”A chamada de função para a função“ Display ”é novamente usada. Isso é para exibir a matriz classificada na concha.

Após a conclusão do programa, precisamos torná-lo livre de erros usando o compilador "G ++" no console. O nome do arquivo será usado com a instrução do compilador "G ++". O código será especificado como livre de erros se não lançar saída. Depois disso, o “./a.O comando de out ”pode ser eliminado para executar o arquivo de código sem erros. A matriz original e a matriz classificada foram exibidas.

Conclusão:

Isso se trata de funcionar de um tipo de pilha e uma maneira de usar a classificação da pilha no código do programa C ++ para executar a classificação. Elaboramos o conceito de heap max e Min Heap for Heap neste artigo e também discutimos o uso de árvores para esse fim. Explicamos o tipo de heap da maneira mais simples possível para nossos novos usuários de C ++ que estão usando o sistema Linux.