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:
[code]
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]>pivo) 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][/code]