Classificação de shell C ++

Classificação de shell C ++
A linguagem C ++ surgiu com muitas técnicas de classificação a serem usadas no programa para classificar uma variedade de objetos. Uma dessas técnicas de classificação é o tipo de shell, que é principalmente outra forma de tipo de inserção. Dentro do tipo de inserção, tendemos a mover um único valor para sua próxima posição de índice. O movimento de um valor para o próximo índice consecutivo pode não dar o resultado necessário se quisermos colocá -lo no final e pode levar mais tempo enquanto classificava. Ao mesmo tempo, o tipo de shell pode mover um valor para longe de seu lugar original e leva menos tempo fazendo isso. Assim, decidimos demonstrar o funcionamento da técnica de classificação da concha na programação C ++. Vamos começar com a criação de arquivos C ++ e sua abertura através das instruções demonstradas abaixo no console do terminal do Ubuntu 20.04 Sistema.

Exemplo 01:

Começando do primeiro exemplo em um novo arquivo, temos que utilizar as bibliotecas necessárias primeiro. Sem o cabeçalho "iostream", um usuário não pode usar qualquer fluxo de entrada e saída no código. Um programador C ++ sempre fará uso de "namespace" e bibliotecas como "iostream", "stdlib" e "stdio.h, etc. Aqui vem o método swap () que será chamado pela função "classificação". A função de classificação passará dois valores em locais diferentes para o método "swap ()" e usará a variável "temp" para trocá -los.

A função show () levará uma matriz e seu tamanho a ser mostrado em seus parâmetros do método main (). Ele usará o loop "for" para iterar toda a matriz até o seu tamanho "S.”Use o objeto“ cout ”para exibir cada valor usando o índice“ i ”separado de outros valores por um espaço. Depois que todos os valores forem exibidos, o cout será usado novamente para adicionar a quebra da linha.

Depois que a matriz não classificada foi exibida, está girando para a função de "classificação" funcionar nela. A função de classificação estará tomando uma matriz e seu tamanho para uso. Inicializou três variáveis ​​inteiras G, J, K. A variável "g" será usada no primeiro loop externo "para" para reduzir a lacuna entre os valores. Ele será iniciado a partir do meio da matriz, de acordo com "g = n/2". Em cada iteração, a lacuna será novamente diminuída por "g/2", eu.e., Outra metade será criada. Ao fazer isso, a matriz será dividida em várias partes, e o tamanho do espaço será menor. O próximo loop "j" começará a partir do valor atual do gap, eu.e., "G", que será o ponto médio de uma matriz naquela época. E continuará até o último índice de uma matriz. Em cada iteração, "J" será incrementado. O "K" para o loop começará de "J-G" e continuará até "K> =."Se o valor em" K+G "for maior ou igual ao valor em" K "de uma matriz, ele quebrará o loop. Caso contrário, os valores serão trocados pela chamada de função "troca". Provavelmente, o valor em "K+G" será uma posição inicial, e "K" estará na última posição de uma matriz.

Todo programa inicia sua execução do código de função do driver principal () durante a execução. Nossa função principal () foi iniciada com uma matriz inteira “a” inicialização. Esta matriz "A" estará em uma ordem aleatória, eu.e., não ordenado. O objeto "cout" é a instrução de saída padrão C ++ usada para exibir algum texto ou valor variável no shell. Desta vez, estamos usando -o para que os usuários saibam que a matriz antes de classificar será exibida na tela. A função "show ()" será chamada passando a matriz original "A" e o número de valores que você deseja mostrar antes de classificar. Embora existam um total de 10 elementos na matriz, estamos classificando e exibindo apenas 9. O método de "classificação" é chamado passando a matriz e o número de elementos a serem classificados aqui. Depois que a classificação foi feita com a classificação do shell, o método "show" será utilizado novamente para exibir o total dos 9 primeiros elementos classificados no shell.

A concha.O arquivo CC foi compilado e resultou na saída abaixo da balança após a execução. Os 9 elementos não classificados para a matriz são exibidos primeiro. Na última linha, os mesmos 9 elementos de uma matriz são exibidos em ordem crescente para classificar.

Exemplo 02:

Aí vem um novo exemplo de uso de shell em nosso programa. Temos usado o mesmo shell.arquivo CC e inicializou nosso código com o mesmo cabeçalho e namespace. Este programa começa a partir da função principal (). O método principal () possui uma matriz inteira a de 5 valores já inicializados. A variável "n" é inicializada usando a função "sizeof ()" para c++. Isso é usado para calcular os números totais em uma matriz "A" e salvar esse valor para variável "n.”Podemos ver que a matriz tem apenas 5 elementos, para que você possa pular o uso do cálculo de vários elementos e usar“ 5 ”em qualquer lugar do código.

Chega a mensagem para os usuários ficarem alertas porque a matriz não classificada será exibida, eu.e., via “cout."A função" Display () "é chamada aqui para exibir a matriz completa, passando por uma matriz e o número de elementos. A função Display () usará o loop "for" para iterar a matriz passada até o seu último índice e exibir os valores como está usando o objeto "cout" e o índice "I."Aqui vem o método" sort () ". A chamada de função para este método está levando a matriz e seu número total de elementos como entrada. O loop mais externo “for” está aqui para diminuir a lacuna entre os valores/índices dividindo o número total de elementos por 2.

O valor de "G" deve ser maior que 0 e diminuirá em 2 novamente após cada iteração. Isso diminuirá a lacuna em cada iteração. O loop interno do “i” aceitará o valor de Gap “G” como ponto de partida e continuará até “n.”Dentro deste loop, o valor de“ i ”será atribuído à variável temporária“ temperatura ”. O loop mais interno “J” está aqui. Começa a partir do ponto "eu" até que o valor de g se torne igual ou maior que "g" e também, o valor no índice "j-g" da matriz se torna maior que a variável "temp". O "J" será diminuído por "G" cada vez. Este loop continuará a trocar o valor no índice "J-G" com o valor em "J J."O valor de" temp "será atribuído ao indexado" j "da matriz, eu.e., Troque quando necessário. Depois de voltar à função Main (), o método Display () será chamado novamente para exibir a matriz classificada.

Na compilação e corrida da concha.Arquivo CC, verifica -se que a matriz não classificada foi classificada agora.

Conclusão:

Em nosso parágrafo de introdução, ilustramos o principal objetivo de usar a classificação do shell em vez de a inserção em C++. Para demonstrar como funciona, dois exemplos simples e diversos foram construídos, o que pode ser alterado de acordo com as preferências do usuário. O primeiro exemplo usa métodos definidos pelo usuário para trocar e classificar elementos, mas o segundo usa uma única função para executar ambos. Ambos os cenários de classificação de shell podem ser usados ​​para qualquer projeto relacionado à tecnologia.