Problema com ordenação de vetor

7 respostas
henry.everton

Boa tarde

Po to fazendo uma revisão aqui e to apanhando pra conseguir ordenar este diaxo.... eu tipo montei o código e ele ordena só a primeira linha cara,.... alguem sabe o que pode ser... to batendo nisso ja faz mó cara ja. valeu
import java.util.*;
public class Ordena{

public static void main(String args[]){

	int[] a = new int[10];
	int aux;
	int cont = 0;
	int cont2 = 1;
	
	for(cont = 0; cont<10; cont++){
	System.out.println("Digite um valor:");
	Scanner src = new Scanner(System.in);
	 a[cont] = src.nextInt();
	}	
	
	for(cont=0; cont<9; cont++){
		for(cont2=1; cont2<10;cont2++){
		if(a[cont] > a[cont2]){
		aux = a[cont];
		a[cont]=a[cont2];
		a[cont2] = aux;
		}
	}
		System.out.println("Matriz Ordenada\n");
	for(cont = 0; cont<10; cont++){
		System.out.println(a[cont]);
		}
	}
}
}

7 Respostas

ivo_costa

Alguns problemas:

Não é uma matriz mas sim um vetor;

Tire o Matriz ordenada (Vetor ordenado) de dentro do laço que ordena coloque ele no final;

Mude o 1 no for mais interno para cont;
import java.util.Scanner;


public class Teste {

	public static void main(String args[]){

		int[] a = new int[10];
		int aux;
		int cont = 0;
		int cont2 = 1;

		for(cont = 0; cont<10; cont++){
			System.out.println("Digite um valor:");
			Scanner src = new Scanner(System.in);
			a[cont] = src.nextInt();
		}	

		for(cont=0; cont<9; cont++){
			for(cont2=cont; cont2<10;cont2++){
				if(a[cont] > a[cont2]){
					aux = a[cont];
					a[cont]=a[cont2];
					a[cont2] = aux;
				}
			}			
		}
		
		System.out.println("Vetor Ordenado\n");
		for(cont = 0; cont<10; cont++){
			System.out.println(a[cont]);
		}
	}

}

ps.: BubleSort é uma merd…

henry.everton

Puts… pode cre…valeu

e sim é uma merda

K_F

Bom dia, também sou um iniciante, mas o trecho " [color=red]System.out.println("Digite um valor:");[/color] " linha 14, não deveria estar fora do loop.

Ao meu ver, você a cada iteração cria uma nova instância.

Abraço, Fabrício :D
import java.util.Scanner;


public class Teste {

	public static void main(String args[]){

		int[] a = new int[10];
		int aux;
		int cont = 0;
		int cont2 = 1;

		for(cont = 0; cont<10; cont++){
			System.out.println("Digite um valor:");
			Scanner src = new Scanner(System.in);
			a[cont] = src.nextInt();
		}	

		for(cont=0; cont<9; cont++){
			for(cont2=cont; cont2<10;cont2++){
				if(a[cont] > a[cont2]){
					aux = a[cont];
					a[cont]=a[cont2];
					a[cont2] = aux;
				}
			}			
		}
		
		System.out.println("Vetor Ordenado\n");
		for(cont = 0; cont<10; cont++){
			System.out.println(a[cont]);
		}
	}

}
ivo_costa

Mas a linha 14 não está fora do loop.

Flw!

jingle

Também não sou muito experiente nesta área mas acredito que deveria estar fora sim esta parte
" Scanner src = new Scanner(System.in); "

deixando dentro do loop somente algo deste tipo “src = new Scanner(System.in);” e fora dele " Scanner src;" pelo motivo de ficar criando novas instância que você sitou

ivo_costa

O Scanner com certeza, pra não ter que ficar fazendo um objeto pra cada iteração.
Linha 15.
Eu não tinha visto isso.

Flw!

K_F

Desculpem a vergonha, e na linha 15 mesmo!

Criado 26 de março de 2008
Ultima resposta 4 de abr. de 2008
Respostas 7
Participantes 4