Gente, como eu faço para ordenar uma lista de nomes inseridos pelo usuario em ordem alfabética?
Quando vi a proposta do exercicio achei bem facil, pois logo pensei no metodo Array.sort() e até bubblesort, porém quando fui apresentar ao professor ele me disse que
eu nao poderia usar Array e nem metodos que nao seja criados por mim mesmo, fiquei um pouco nervoso pq ele só me disse isso faltando 2 dias para o prazo final de entrega do exercicio, e nao consegui bolar nada até agora, alguem poderia me dar uma força?
valeu
Já que o professor não quer que você utilize nenhum método para auxiliar na tarefa, adicione todos os nomes no banco e depois faça um SELECT com ORDER BY e mostre o resultado. Caso contrário, vai dar um pouco de trabalho.
Olha cara, Já fiz um algoritmo deste tipo para a faculdade.
O objetivo era ordenar um array de String comparando apenas as duas primeiras letras dos nomes.
Sei que o algoritmo é limitado(POG total), porém pode te ajudar a iniciar algo mais elaborado.
class TestOrdenacao {
public static void main(String[] args) {
//Testando método de ordenação
String[] nomes = ordenaArray(new String[]{"Fulano", "Sicrano", "Beltrano", "Barabara", "Samy", "Fabiana" });
//Imprime os nomes
for (int i = 0; i < nomes.length; i++) {
System.out.println(nomes[i]);
}
}
//Método de ordenação
public static String[] ordenaArray(String[] arrayNomes){
// variável para auxiliar na troca dos nomes
String aux = "";
for (int i = 0; i < arrayNomes.length; i++) {
for (int j = 0; j < arrayNomes.length; j++) {
String nome1 = arrayNomes[i];//string que está no índice i do array.
String nome2 = arrayNomes[j];//string que está no índice j do array.
//A primeira letra do nome2 é maior do que a primeira letra do nome1 ?
if(nome2.charAt(0) > nome1.charAt(0)){
//utiliza a variável auxiliar e trocar os nomes de posição no array.
aux = nome1;
arrayNomes[i] = nome2;
arrayNomes[j] = aux;
//A primeira letra do nome2 é igual a nome1?
}else if(nome2.charAt(0) == nome1.charAt(0)){
//Compara a segunda letra
if(nome2.charAt(1) > nome1.charAt(1)){
aux = nome1;
arrayNomes[i] = nome2;
arrayNomes[j] = aux;
}
}
}
}
return arrayNomes;
}
}
Aceito críticas quanto ao código postado :XD:
Falou
onde que você não pode usar array? Apenas na ordenação?
Sem usar arrays fica impossível. Acho que ele quis dizer que você não pode usar o Arrays.sort, pois aí vc não implementou a ordenação.
Provavelmente ele quer o clássico Bubble Sort:
[code]package br.com.guj;
public class OrdenarNomes {
public static void main(String[] args) {
String nomes[] = { "Homem Aranha", "Hulk", "Homem de Ferro",
"Superman", "Charles Xavier", "Tempestade", "Wolverine" };
for (int i = 0; i < nomes.length - 1; ++i)
for (int j = i + 1; j < nomes.length; ++j)
if (nomes[i].compareTo(nomes[j]) > 0) {
String temp = nomes[i];
nomes[i] = nomes[j];
nomes[j] = temp;
}
for (String nome : nomes)
System.out.println(nome);
}
}
[/code]
pode usar uma lista duplamente encadeada com insertion sort.
Basta você implementar um algoritmo de ordenação qualquer. A única coisa que muda com relação a ordenação de inteiros é a comparação entre String’s. Se você não puder usar o método compareTo() da classe String você pode implementar um por sua conta.