Problema Ordenação

4 respostas
V

Pessoal estudei o metodo heap sort e estou tentando implementalo fiz tudo certinho mas não tão certinho assim e está ordenando tudo errado vou postar o código para que alguem possa me ajudar.

att

public static void main(String args[]) {
	
		int vetor[] = criarVetor();
		metodoBolha(vetor);
	
	}

	public static int[] criarVetor() {

		int[] vetor = new int[10];

		for (int i = 0; i < 10; i++) {

			vetor[i] = (int) (Math.random() * 100);
		}
		return vetor;
		
	}

	public static void metodoBolha(int vet[]) {

		boolean houveTroca;

		int aux;

		do

		{
			houveTroca = false;
			for (int i = 0; i < vet.length - 1; i++)

			{
				if (vet[i] > vet[i + 1]) {
					
					aux = vet[i];

					vet[i] = vet[i + 1];

					vet[i + 1] = aux;

					houveTroca = true;

				}

			}

		} while (houveTroca);
	
		for (int i = 0; i < vet.length; i++) {

			System.out.print(vet[i] + ", ");

		}
	}

4 Respostas

D

Acho que você postou o algoritmo errado…

Esse é o Bubblesort e está funcionando corretamente, pelos testes que fiz.

V

desculpa realmente postei o errado eu sem querer postei o errado desculpem - me.

vai ai o código certo

int[] vetor = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };

		int posOrdenada, i, pai, filho, t;

		boolean continuarHeap;

		posOrdenada = vetor.length;

		i = vetor.length % 2;

		do{

			if (i > 0) {

				i = i - 1;

				t = vetor[i];
			}
			else {
				posOrdenada = posOrdenada - 1;

				t = vetor[posOrdenada];

				vetor[posOrdenada] = vetor[0];
			}
				
			
			    pai = i;

				filho = i * 2 + 1;

				continuarHeap = true;

				while (filho > posOrdenada && continuarHeap)

					if ((filho + 1 < posOrdenada) &&

					(vetor[filho + 1] > vetor[filho]))

						filho = filho + 1;

				if (vetor[filho] < t) {

					vetor[pai] = vetor[filho];

					pai = filho;

					filho = pai * 2 + 1;

				}

				else

					continuarHeap = false;

				vetor[pai] = t;

			
			}while (posOrdenada > 1);

		for (i = 0; i < vetor.length; i++) {

			System.out.print(vetor[i] + ", ");

		}

	}
A

Olá, como vai?

Sugestão.

ArrayList; use Array.sort no vetor em seguida lhe mando exemplo

A

import java.util.Arrays;

public class ForumTeste {
public static void main (String []args){

int vet [] = new int[10];    //Vetor com 10 posções

    for (int i = 0 ;i<vet.length;i++){
        vet[i]= (int)(1 + Math.random()*10);  // cada posição do vetor recebe um valor aleatório entre 1 e 10
    }
    Arrays.sort(vet); // ordena vetor;

     for (int i = 0 ;i<vet.length;i++){  // imprime vetor
        System.out.println(vet[i]);
    }



            
}

}

Espero ter ajudado.
Viva o java!

Criado 30 de setembro de 2010
Ultima resposta 1 de out. de 2010
Respostas 4
Participantes 3