Metodo de Ordenação Quick Sort [RESOLVIDO]

4 respostas
V

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.

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);
		
	}

}

4 Respostas

V

Pessoal consegui dar uma altera mas msmo assim não consigo fazer ele rodar... alguem pode me ajudar

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);


		}
}
Carreiro

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!!

evertonsilvagomesjav

Quanto ao nome de classe, a classe compila normal com letra minuscula porém e padrão Java Bean usar o CamelCase para classes.

V

Muito obrigado entendi sim como foi feito e assim rodou bacaninha muito obrigado valew a todos…

abraxxx e bom feriado a todos…

Criado 3 de setembro de 2010
Ultima resposta 3 de set. de 2010
Respostas 4
Participantes 3