Boa Tarde!!!
Estava implementando um algoritmo de ordenação utilizando de recursividade mas esta dando alguns problemas… vou postar o codigo aqui quem puder ajudar ficaria grato.
[code]public class teste {
/**
* @param args
*/
public static void main() {
int vetor[]= { 100, 15, 65, 65, 76, 3, 4, 6, 8, 89 };
quickSort(vetor, 0, vetor.length-1);
public static quickSort(int v[]; int esquerda; int direita)
int esq = esquerda;
int dir = direita;
int pivo = v[(esq + dir) % 2];
int troca;
while (esq <= dir) {
while (v[esq] < pivo) {
esq = esq + 1;
}
while (v[dir] > pivo) {
dir = dir - 1;
}
if (esq <= dir) {
troca = v[esq];
v[esq] = v[dir];
v[dir] = troca;
esq = esq + 1;
dir = dir - 1;
}
}
if (dir > esquerda)
quickSort(v, esquerda, dir);
if(esq < direita)
quickSort(v, esq, direita);
}
}[/code]
Pessoal consegui dar uma altera mas msmo assim não consigo fazer ele rodar… alguem pode me ajudar
[code]public class teste {
/**
* @param args
*/
public static void quickSort(int v[], int esquerda, int direita){
int esq = esquerda;
int dir = direita;
int pivo = v[(esq + dir) % 2];
int troca;
while (esq <= dir) {
while (v[esq] < pivo) {
esq = esq + 1;
}
while (v[dir] > pivo) {
dir = dir - 1;
}
if (esq <= dir) {
troca = v[esq];
v[esq] = v[dir];
v[dir] = troca;
esq = esq + 1;
dir = dir - 1;
}
}
if (dir > esquerda)
quickSort(v, esquerda, dir);
if(esq < direita)
quickSort(v, esq, direita);
}
public static void main() {
int vetor[]= { 100, 15, 65, 65, 76, 3, 4, 6, 8, 89 };
quickSort(vetor, 0, vetor.length-1);
System.out.println(" " + vetor);
}
}
[/code]
Caro VictorFarion segue o seu código corrigido!
Os erros por mim identificados foram:
1- Nome de classe sempre começa com a primeira letra maiúscula.
2- Na linha 8 você está usando o mod (%) que retorna o resto da divisão, em vez do sinal de divisão (/) que retorna o resultado da divisão.
3- Na linha 34 você esqueceu do parâmetro " String args[] " que deve ser passado no método main.
4- Na última linha que você manda imprimir " System.out.println(" " + vetor); ", você está pedindo para imprimir o endereço de memória onde o vetor está armazenado e não os valores do mesmo. Eu fiz um for que lerá todas as posições do vetor.
package exemplos;
public class Teste {
public static void quickSort(int v[], int esquerda, int direita) {
int esq = esquerda;
int dir = direita;
int pivo = v[(esq + dir) / 2];
int troca;
while (esq <= dir) {
while (v[esq] < pivo) {
esq = esq + 1;
}
while (v[dir] > pivo) {
dir = dir - 1;
}
if (esq <= dir) {
troca = v[esq];
v[esq] = v[dir];
v[dir] = troca;
esq = esq + 1;
dir = dir - 1;
}
}
if (dir > esquerda)
quickSort(v, esquerda, dir);
if (esq < direita)
quickSort(v, esq, direita);
}
public static void main(String args[]) {
int vetor[] = { 100, 15, 65, 65, 76, 3, 4, 6, 8, 89 };
quickSort(vetor, 0, vetor.length - 1);
for (int i = 0; i < vetor.length; i++) {
System.out.println(" " + vetor[i]);
}
}
}
Espero que possa ter ajudado!!
Bons estudos!!
2 curtidas
Quanto ao nome de classe, a classe compila normal com letra minuscula porém e padrão Java Bean usar o CamelCase para classes.
Muito obrigado entendi sim como foi feito e assim rodou bacaninha muito obrigado valew a todos…
abraxxx e bom feriado a todos…