Ir ao conteúdo
  • Cadastre-se

Java Achar menor, segundo menor, ter. menor valor da matriz.


n0v1sk

Posts recomendados

Olá clube,

Queria saber qual método posso utilizar para encontrar os menores valores da matriz até o maior respectivamente. Ex: Menor, Segundo Menor, Terceiro Menor... Maior valor.

Segue meu código:

int matrizCusto[][] = new int[3][3];
        
        matrizCusto[0][0] = 8;
        matrizCusto[1][0] = 15;
        matrizCusto[2][0] = 3;
        
        matrizCusto[0][1] = 5;
        matrizCusto[1][1] = 10;
        matrizCusto[2][1] = 9;
        
        matrizCusto[0][2] = 6;
        matrizCusto[1][2] = 12;
        matrizCusto[2][2] = 10;
        
        int menorCusto = matrizCusto[0][0];
        int SegMenorCusto = matrizCusto[0][0];
        int maiorCusto = matrizCusto[0][0];
        
        System.out.println("Tabela de Custo!");
        
        for (int i = 0; i < matrizCusto.length; i++) {
            for (int j = 0; j < matrizCusto.length; j++) {
                if (matrizCusto[i][j] < menorCusto) {
                    menorCusto = matrizCusto[i][j];
                }
                if (matrizCusto[i][j] > maiorCusto) {
                    maiorCusto = matrizCusto[i][j];
                }
                if (matrizCusto[i][j] < SegMenorCusto && matrizCusto[i][j] > menorCusto) {
                    SegMenorCusto = matrizCusto[i][j];
                }
                System.out.print(matrizCusto[i][j] + " ");
                
            }
            System.out.println();
        }
        
        System.out.println("Menor Custo = " + menorCusto);
        System.out.println("Segundo menor custo = " + SegMenorCusto);
        System.out.println("Maior Custo = " + maiorCusto);

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

@SamuelBrev @SamuelBrev    creio que você pode usar um método de ordenação de vetor / matriz que ordene de forma crescente  por exemplo , que pode ser o bubblesort , e aí depois de ordenado , o primeiro elemento será o menor e o segundo será o segundo menor , e aí vai até o último que será o maior  , e se você precisar que a matriz continue inalterada então precisa criar uma matriz auxiliar e copiar todos os números da matriz original para ela no início e faça as modificações nela , assim depois de tudo pronto , a matriz original conterá os mesmos valores do início ,  e então seu código com algumas modificações poderia ser assim   :

package ordenarmatriz;
public class Main {
    public static void main(String[] args) {
        int matrizCusto[][] = new int[3][3];
        int j,i,w,k,a,b,aux,cont=0;
        matrizCusto[0][0] = 8;
        matrizCusto[1][0] = 15;
        matrizCusto[2][0] = 3;
        matrizCusto[0][1] = 5;
        matrizCusto[1][1] = 10;
        matrizCusto[2][1] = 9;
        matrizCusto[0][2] = 6;
        matrizCusto[1][2] = 12;
        matrizCusto[2][2] = 10;
        for(i=0;i<3;i++){
            for(j=0;j<3;j++){/* ordenar a matriz */
                for(k=0;k<3;k++){
                    for(w=0;w<3;w++){
                        if( matrizCusto[i][j] < matrizCusto[k][w]){ // compara ao contrário pois vai inverter tudo */
                            aux               = matrizCusto[i][j] ;
                            matrizCusto[i][j] = matrizCusto[k][w] ;
                            matrizCusto[k][w] = aux               ;
                            cont++;
                            System.out.println(cont+" troca"); /* mostra as trocas  */
                            for(a=0;a<3;a++){                  /* imprime as trocas */
                                for(b=0;b<3;b++)
                                    System.out.print(matrizCusto[a][b]+" ");
                                System.out.println();
                            }
                            System.out.println();
                        }
                    }
                }
            }
        }
        System.out.println("  Resultado");
        cont=1;
        for(i=0;i<3;i++){
            for(j=0;j<3;j++){
                if(cont==1)
                    System.out.print("   Menor ");
                else
                    if(cont<9)
                        System.out.print(" "+cont+" menor ");
                    else
                        System.out.print("   Maior ");
                System.out.println(matrizCusto[i][j]);
                cont++;
            }
        }
    }
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!