Ordenação de matrizes em C/C#/C++
2 participantes
Página 1 de 1
Ordenação de matrizes em C/C#/C++
Elabore um algoritmo que leia e imprima uma matriz Mnxn com os elementos de suas linhas ordenados em ordem crescente.
Utilizando o código explícito na imagem, o programa roda normalmente, porém na parte: " Matriz M com os elementos..." se eu fizer uma pequena mudança como na parte em vermelho o programa roda, mas não dá certo.
for (i=1; i <= L; i++)
{
for(j=1; j <= C; j++)
{
for (k=1; k < C; k++)
{
if (M[i][j] < M[i][j+1])
{
Aux=M[i][j+1];
M[i][j+1]=M[i][j];
M[i][j]=Aux;
}
}
}
}
Assim, durante todo o desenvolvimento do código eu usei "for (i=1; i <= L; i++)" e "for (j=1; j <= C; j++)". Por que que no fim eu tenho que mudar a estrutura dos laços como foi feito na imagem?
{
for(j=1; j <= C; j++)
{
for (k=1; k < C; k++)
{
if (M[i][j] < M[i][j+1])
{
Aux=M[i][j+1];
M[i][j+1]=M[i][j];
M[i][j]=Aux;
}
}
}
}
Assim, durante todo o desenvolvimento do código eu usei "for (i=1; i <= L; i++)" e "for (j=1; j <= C; j++)". Por que que no fim eu tenho que mudar a estrutura dos laços como foi feito na imagem?
Giovana Martins- Grande Mestre
- Mensagens : 7601
Data de inscrição : 15/05/2015
Idade : 23
Localização : São Paulo
Re: Ordenação de matrizes em C/C#/C++
Supondo que sua matriz tenha n colunas, em bubble sort, você precisa percorrer cada linha n(n-1) vezes.
Observe o que acontece quando você coloca primeiro for(j=1; j <= C; j++) e depois for(k=1; k < C; k++) :
- Spoiler:
- Vamos supor que sua matriz tenha 3 linhas e 3 colunas.i = 1, j = 1, k = 1. Análise dos elementos M[1][1] e M[1][2].i = 1, j = 1, k = 2. Análise dos elementos M[1][1] e M[1][2].i = 1, j = 2, k = 1. Análise dos elementos M[1][2] e M[1][3].i = 1, j = 2, k = 2. Análise dos elementos M[1][2] e M[1][3].i = 1, j = 3, k = 1. Não faz sentido essa linha, pois não há M[1][4].i = 1, j = 3, k = 2. Não faz sentido essa linha, pois não há M[1][4].i = 2, j = 1, k = 1. Análise dos elementos M[2][1] e M[2][1]....Percebeu algo? Você não analisou a primeira linha 3.2 = 6 vezes, mas sim passou apenas 1 vez por ela, comparando dois elementos duas vezes consecutivas.
Agora coloque primeiro for(k=1; k <= C; j++) e depois for(j=1; j < C; k++) e faça o mesmo raciocínio:
- Spoiler:
- i = 1, k = 1, j = 1. Análise dos elementos M[1][1] e M[1][2].i = 1, k = 1, j = 2. Análise dos elementos M[1][2] e M[1][3].i = 1, k = 2, j = 1. Análise dos elementos M[1][1] e M[1][2].i = 1, k = 2, j = 2. Análise dos elementos M[1][2] e M[1][3].i = 1, k = 3, j = 1. Análise dos elementos M[1][1] e M[1][2].i = 1, k = 3, j = 2. Análise dos elementos M[1][2] e M[1][3].i = 2, k = 1, j = 1. Análise dos elementos M[2][1] e M[2][2]....Pronto! O computador percorre cada linha 6 vezes!
xSoloDrop- Fera
- Mensagens : 492
Data de inscrição : 23/03/2015
Idade : 26
Localização : Araçatuba SP
Re: Ordenação de matrizes em C/C#/C++
Entendido. Muito obrigada!
Giovana Martins- Grande Mestre
- Mensagens : 7601
Data de inscrição : 15/05/2015
Idade : 23
Localização : São Paulo
Tópicos semelhantes
» Princípio da Boa Ordenação
» Possibilidades de ordenação de algarismos
» Propriedades de matrizes e operações com matrizes UFSC
» Matrizes
» Matrizes
» Possibilidades de ordenação de algarismos
» Propriedades de matrizes e operações com matrizes UFSC
» Matrizes
» Matrizes
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|