Erro no código de ordenação?

1 resposta
T
Alguém pode me ajudar? Estou quase terminando o meu trabalho da facul, eu preciso ordenar uma matriz em ordem decrescente e mostrar o nº de comparações e o nº de trocas que tive que fazer para ordenar. Para eu saber o nº de comparações e o nº de trocas eu tenho que declarar as duas variáveis como static na função Main, correto? Pois o erro que está gerando é das declarações dessas duas variáveis. Segue abaixo o código:
import java.util.Random;
 
 public class quick {
 	
 	private static void quicksort (int[] vet, int idxMenor, int idxMaior){
 
 	    int idxLeft=idxMenor;    // armazena o menor indice do vetor
 	    int idxRight=idxMaior;   // armazena o maior indice do vetor
 	    int pivo=vet[(idxMenor+idxMaior)/2];  // pivô (armazena o valor do meio)
 	    int auxTroca;
 
 	    do
 	    {    
 	        while (vet[idxLeft]&gtpivo) idxLeft++;
 	        qtdcompara++;
 	        while (vet[idxRight]<pivo) idxRight--;
 	        qtdcompara++;
 	        if (idxLeft><=idxRight)
 	        {
 	        	auxTroca=vet[idxLeft];
 	            vet[idxLeft]=vet[idxRight];
 	            vet[idxRight]=auxTroca;
 	            idxLeft++;
 	            idxRight--;
 	            qtdtrocas++;
 	        }
 	    } while (idxLeft<=idxRight);
 
 	    //  recursividade
 	    if (idxMenor<idxRight) quicksort(vet, idxMenor, idxRight);
 	    if (idxLeft><idxMaior) quicksort(vet, idxLeft, idxMaior);
 	}
 	
 	
 	/**
 	* @param args
 	*/
 	public static void main(String args[]){
     // TODO Auto-generated method stub
 		int static qtdcompara=0;
 		int static qtdtrocas=0;
 		int idx;
 		int matriz[][] = new int [49][69];
 		int vetor[] = new int [3499];
 		
 		Random rnd = new Random();
 		idx = 0;
 		for (int linha = 0;linha >< matriz.length; linha++){
 			for (int coluna = 0; coluna < matriz[linha].length; coluna++){
 				matriz[linha][coluna] = rnd.nextInt();
 	            vetor[idx] = matriz[linha][coluna];
 				idx++;
 			}
 		}
       
 		quicksort(vetor, 0, vetor.length - 1);
 		
 		idx = 0;
 		for (int linha = 0; linha < matriz.length; linha++){
 			for (int coluna = 0; coluna < matriz[linha].length; coluna++){
 				matriz[linha][coluna] = vetor[idx];
 				idx++;
 				System.out.println(matriz[linha][coluna] + " ");
 			}
 			System.out.println("\n");
         }
     }
 	
 }
[/code]

1 Resposta

B

Ola,

Vc so pode declarar variaveis estaticas para classes, coloque elas na sua classe, fora do metodo main:
public class Exemplo{
  int static qtdcompara=0;
  int static qtdtrocas=0; 

  public static vois main(String[] args){
    ...
  }
}
Criado 14 de março de 2007
Ultima resposta 14 de mar. de 2007
Respostas 1
Participantes 2