Em C ++, há um problema técnico, no sentido de que três matrizes resultam em vez da nova matriz mesclada. Não seria bom excluir as duas matrizes antigas após a fusão e a memória não utilizada livre? O C ++ tem duas maneiras de se fundir duas matrizes: se as duas matrizes mescladas mescladas, usavam memória dinâmica, elas podem ser excluídas para acabar com uma matriz; Caso contrário, o programador acaba com três matrizes.
A fusão de matrizes, em última análise, ajustar uma na parte de trás da outra é boa; Mas pode ser melhor ter uma classificação mínima, pois as matrizes são mescladas. Classificar como um todo, é um tópico inteiro em programação. Classificar como um todo não é abordado neste artigo. No entanto, uma classificação mínima muito simples é abordada.
Este artigo explica como mesclar duas matrizes, para acabar com três matrizes e como mesclar duas matrizes para acabar com uma matriz. Alguma classificação mínima também é considerada. Para mesclar duas matrizes, as duas matrizes devem ser do mesmo tipo.
O procedimento de fusão de duas matrizes pode ser estendido a mais de duas matrizes.
Conteúdo do artigo
Mesclagem de matrizes sem loja grátis
Mesclando sem classificar
Considere as duas matrizes a seguir:
char arr1 [] = 'i', 'j', 'k', 'l', 'm';O primeiro tem 5 elementos e o segundo tem 8 elementos. Se os elementos da segunda matriz estiverem de alguma forma instalados na parte traseira da primeira matriz, uma matriz de 13 elementos será formada. Para conseguir isso sem o uso da loja gratuita (memória dinâmica), uma terceira matriz de 13 valores vazios deve ser criada primeiro. Em seguida, os 5 valores da primeira matriz serão copiados, para os 5 primeiros locais da terceira matriz. Os 8 valores da segunda matriz serão copiados para as 8 posições restantes da terceira matriz. A terceira matriz se torna a matriz mesclada e desejada. O programa a seguir ilustra o seguinte:
#incluirA saída é:
Eu j k l m a b c d e f g hObserve como a indexação foi usada nos loops para. O problema com esse esquema é que as duas primeiras matrizes se tornaram redundantes. Eles agora estão ocupando a memória do computador desnecessariamente. Sem loja gratuita (memória dinâmica), as matrizes não podem ser removidas da memória até sair do escopo. Para resolver esse problema, use uma loja gratuita - veja abaixo.
O primeiro segmento de código inclui a biblioteca iostream e declara o uso do espaço para nome padrão para o restante do programa. O restante do programa está na função principal (). As três primeiras declarações da função Main () declara a primeira, segunda e terceira matrizes. O próximo segmento de código é um loop para copia todos os elementos da matriz menor para a terceira matriz. A grande variedade dos dois primeiros poderia ter sido copiada primeiro; isso não importa.
O próximo segmento de código usa o loop for para copiar a matriz maior na parte traseira da matriz menor já na terceira matriz. A terceira matriz é a matriz mesclada. A soma do número de elementos nas duas primeiras matrizes deve ser igual ao número de elementos na terceira matriz. O último segmento de código exibe os valores na terceira matriz.
Fusão com alguma classificação
Enquanto inserindo elementos na terceira matriz, no início, os primeiros elementos de ambas as matrizes podem ser comparados e o valor menor inserido primeiro antes do primeiro valor da outra matriz. Os segundos elementos de ambas as matrizes podem ser comparados a seguir, e o menor valor inserido na terceira matriz, antes do segundo valor da outra matriz, é inserida. Os terceiros elementos de ambas as matrizes podem ser comparados a seguir, e o valor menor inserido antes do terceiro valor da outra matriz. Este procedimento continua até que todos os elementos da matriz mais curta sejam inseridos ao lado do mesmo número de elementos da matriz mais longa. O restante dos elementos da matriz mais longa pode ser empurrado para a terceira matriz em seu pedido. O programa a seguir ilustra o seguinte:
#incluirA saída é:
A i b j c k d l e m f g hObserve a aritmética usada nos índices.
Mesclagem de matrizes usando uma loja grátis
Mesclando sem classificar
A loja gratuita é a memória alocada a um programa a ser usado quando precisar de memória extra. Uma matriz pode ser criada e excluída na loja gratuita com o novo operador [] e o operador delete [], respectivamente. Os dois programas acima serão repetidos abaixo. A primeira e a segunda matrizes serão criadas dinamicamente na loja gratuita e serão excluídas após a terceira matriz mesclada ter sido feita. A terceira matriz será criada na memória normal (área).
O programa a seguir ilustra isso para fusão sem classificar:
#incluirA saída é:
Eu j k l m a b c d e f g hO nome das matrizes na loja gratuita são dicas. Os locais dos elementos de ARR1 e ARR2 foram excluídos após seu uso no programa. O resto do código é como um anterior.
Fusão com alguma classificação
O programa anterior com alguma classificação é repetido aqui. No entanto, aqui, a primeira e a segunda matrizes são criadas em uma loja gratuita. Eles são excluídos após seu uso. O programa é:
#incluirA saída é:
A i b j c k d l e m f g hConclusão
Fusão de matrizes é realmente uma coisa simples. Acabei de se encaixar em uma matriz na parte de trás da outra matriz, e você fundiu as duas matrizes. Os programas que os programadores enfrentam com a fusão de matrizes não têm a ver com o ajuste de uma matriz na parte traseira de outra matriz. Eles devem fazer a apagamento das duas matrizes anteriores e/ou classificar a matriz mesclada. As matrizes devem ser do mesmo tipo, para serem mescladas.
Se alguma das duas primeiras matrizes não será mais necessária após a fusão, ela deve ser criada dinamicamente na loja gratuita e depois excluída após o uso, para a memória livre. A matriz mesclada também pode ser criada na loja gratuita, mas isso não é necessário.
A matriz mesclada pode ser classificada em diferentes extensões. A classificação completa é um tópico inteiro na programação de computador. A classificação completa é de esquemas diferentes na programação de computadores. Existe um esquema chamado Merge-Sorte. Este esquema faz a fusão e a classificação ao mesmo tempo. No entanto, o esquema mais popular parece ser o Quicksort.