Ordenar String?

Galera preciso criar um algoritmo para ordenar uma lista de strings, porem
preciso do algoritmo, alguem sabe por onde posso começar?, ja to tentando isso
faz uns 5 dias heheh;… grato

Post o que vc já fez para podermos analisar e te ajudar.

Bem se for nomes você pode pegar o código de cada caracter desse nome e somá-los,
e ordenar as strings pela soma dos caracteres.

Procure por algorítmo da bolha, Quick sort, Merge sort ou Heap sort. Todos fazem ordenação.

Para comparar duas Strings, use o método compare, da própria classe String. Ele gera um resultado mais consistente do que a sugestão do Wenderson, que provavelmente gerará uma ordenação sem muito sentido para o usuário.

Bom com disse o nosso amigo ViniGodoy, existem alguns algoritimos para você fazer ordenação.

Mas o bom do Java é utilizar o que ele já oferece de melhor para essa solução sem você praticamente fazer nada e utilizar do conceito de coleções.

Acho que quem vai poder te ajudar mais é utilizar uma coleção do tipo List, usando um ArrayList. E utilizar um método sort, que já vem por herança.

Da uma estudada sobre isso que você vai ver como isso pode te ajudar muito.

Blz

Falow boa semana a todos.

att

Romildo Jozue Paiter

O método sort não vem por herança. Ele está na classe Collections e não na classe Collection (que é pai de ArrayList). Tanto que é usado assim:

Collections.sort(suaLista);

Para arrays também existe o método sort, mas na classe Arrays:

Arrays.sort(seuArray);

Mas como o próprio autor do tópico disse que precisa do algorítmo em si, e não só de um método pronto, resolvi postar ali os métodos de ordenação conhecidos. Ele agora que escolha um e implemente. :slight_smile:

Outra opção é ver como esses métodos são implementados nos fontes do Java.

PS: Para uma ordenação baseada no alfabeto, é bom usar um comparador que leve em consideração a lingua sendo utilizada. O Java possui uma classe para isso, chamada Collator:

List<String> lista = new ArrayList<String>();
lista.add("Zênite");
lista.add("Ângston");
lista.add("amarelo");
lista.add("Amasiado");
lista.add("Zebra");
lista.add("Banana");
lista.add("baba");
lista.add("Babá");

//Ordena pela tabela unicode. 
Collections.sort(lista);
System.out.println(lista);

//Ordena de acordo com o dicionário
Collections.sort(lista, Collator.getInstance());
System.out.println(lista);
1 curtida

Valew Vini, obrigado pela correção…

E o Nosso amigo ganhou já o código, e é como vc disse. Vai dele usar essa dica ou Implementar seu próprio método.

att

Romildo Paiter :slight_smile:

Mais interessante é ver como isso fica no .net:

IList<String> ordenadas = 
   (from s in lista
   orderby s
   select s).toList();

Ou, com a sintaxe do lambda:

IList<String> ordenadas = lista.Orderby(x => x).toList();

A Ordenação, fica assim:
O Usuário Digita os Nomes e Ele Mostrar a Ordem por Digitação e a Ordem Alfabética do Nomes Digitados:

import java.text.Collator;
import java.util.;
import javax.swing.
;
import java.util.Scanner;
public class Alunos {
public static void main(String[] args) {

	Scanner ord = new Scanner(System.in);

	System.out.println("Digite o 1º Numero: ");
	String n1 = ord.next();
	
	System.out.println("Digite o 2º Numero: ");
	String n2 = ord.next();
	
	System.out.println("Digite o 3º Numero: ");
	String n3 = ord.next();
	
	System.out.println("Digite o 4º Numero: ");
	String n4 = ord.next();
	
	System.out.println("Digite o 5º Numero: ");
	String n5 = ord.next();
	
	System.out.println("Digite o 6º Numero: ");
	String n6 = ord.next();
	
	System.out.println("Digite o 7º Numero: ");
	String n7 = ord.next();
	
	System.out.println("Digite o 8º Numero: ");
	String n8 = ord.next();
	
	System.out.println("Digite o 9º Numero: ");
	String n9 = ord.next();
	
	System.out.println("Digite o 10º Numero: ");
	String n10 = ord.next();

	List<String> lista = new ArrayList<String>();  
	lista.add(" "+n1);  
	lista.add(" "+n2);  
	lista.add(" "+n3);  
	lista.add(" "+n4);  
	lista.add(" "+n5);  
	lista.add(" "+n6);  
	lista.add(" "+n7);  
	lista.add(" "+n8);  
	lista.add(" "+n9);
	lista.add(" "+n10);

	//Ordena pela tabela unicode.   
	Collections.sort(lista);  
	System.out.println("Lista de Nomes Digitados: "+lista);  

	//Ordena de acordo com o dicionário  
	Collections.sort(lista, Collator.getInstance());  
	System.out.println("Lista Ordenada: "+lista);  




} 

}

[quote=Rhomullo]A Ordenação, fica assim:
O Usuário Digita os Nomes e Ele Mostrar a Ordem por Digitação e a Ordem Alfabética do Nomes Digitados:

import java.text.Collator;
import java.util.;
import javax.swing.
;
import java.util.Scanner;
public class Alunos {
public static void main(String[] args) {

	Scanner ord = new Scanner(System.in);

	System.out.println("Digite o 1º Numero: ");
	String n1 = ord.next();
	
	System.out.println("Digite o 2º Numero: ");
	String n2 = ord.next();
	
	System.out.println("Digite o 3º Numero: ");
	String n3 = ord.next();
	
	System.out.println("Digite o 4º Numero: ");
	String n4 = ord.next();
	
	System.out.println("Digite o 5º Numero: ");
	String n5 = ord.next();
	
	System.out.println("Digite o 6º Numero: ");
	String n6 = ord.next();
	
	System.out.println("Digite o 7º Numero: ");
	String n7 = ord.next();
	
	System.out.println("Digite o 8º Numero: ");
	String n8 = ord.next();
	
	System.out.println("Digite o 9º Numero: ");
	String n9 = ord.next();
	
	System.out.println("Digite o 10º Numero: ");
	String n10 = ord.next();

	List<String> lista = new ArrayList<String>();  
	lista.add(" "+n1);  
	lista.add(" "+n2);  
	lista.add(" "+n3);  
	lista.add(" "+n4);  
	lista.add(" "+n5);  
	lista.add(" "+n6);  
	lista.add(" "+n7);  
	lista.add(" "+n8);  
	lista.add(" "+n9);
	lista.add(" "+n10);

	//Ordena pela tabela unicode.   
	Collections.sort(lista);  
	System.out.println("Lista de Nomes Digitados: "+lista);  

	//Ordena de acordo com o dicionário  
	Collections.sort(lista, Collator.getInstance());  
	System.out.println("Lista Ordenada: "+lista);  




} 

}
[/quote]

Por, favor, antes de responder novamente leia as regras do fórum e leia os Posts que estão fixos nos fórum. Eles irão lhe ajudar na sobrevivência no GUJ.

Da próxima vez que responder, leve em consideração a data de criação do Post e se o mesmo já não foi respondido de forma satisfatória, como foi o caso desse aqui.

Enfim, não ressucite tópicos que á estão mortos ou já foram resolvidos, a não ser que seja para reviver a dúvida e incrementar alguma coisa realmente nova na questão. Ainda assim seria bom estudar a possibilidade de criar um POst novo.

Abs [] e bem vindo ao GUJ.