Duvidas como ordenar uma lista de nomes em ordem alfabética

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 &lt; nomes.length - 1; ++i)
		for (int j = i + 1; j &lt; nomes.length; ++j)
			if (nomes[i].compareTo(nomes[j]) &gt; 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.

Veja isto:

http://www.guj.com.br/java/286911-lista-dup-encadeada-com-no-cabeca-perfeita-para-fins-didaticos#1516601

Tem um método de ordenação.