Classificação de dados

Boa noite pessoal, preciso fazer um trabalho para a faculdade que é implementar dois métodos de classificação de dados, excluindo o da bolha. E eu tenho a seguinte classe:

public class Pessoa {
    private String nome;
    private int idade;
    private String cidade;    
    
    public Pessoa(){
        this("",0,"");
    }    
    
    public Pessoa(String nome, int idade, String cidade){
        this.setNome(nome);
        this.setIdade(idade);
        this.setCidade(cidade);
    }
        
    /* Set's */
    public void setNome(String nome){
        this.nome = nome;
    }
    
    public void setIdade(int idade){
        this.idade = idade;
    }
    
    public void setCidade(String cidade){
        this.cidade = cidade;
    }
    
    /* Get's */
    
    public String getNome() {
        return this.nome;
    }

    public int getIdade() {
        return this.idade;
    }

    public String getCidade() {
        return this.cidade;
    }

E a Classe Classifica que vai conter a lista de Pessoas e oredená-las.

[code]
public class Classifica {

//Contém uma lista de pessoas.
private ArrayList<Pessoa> listaPessoa;

/* Construtor */
public Classifica(){
    this.listaPessoa = new ArrayList<Pessoa>();        
}

/* Adiciona uma pessoa à lista */
public void addPessoa(Pessoa pes){
    this.listaPessoa.add(pes);
   
}
 [/code]

Eu fiz um arrayList de Pessoas, e preciso classificálas e lista-las de acordo com o campo escolhido, minha pergunta é a seguinte, se alguém pode me dar uma mão de pelo menos como começar, tipo como ordenar pelo campo nome por exemplo que é uma String, lembrando que eu não posso usar os métodos já existentes, tenho que fazer tudo manualmente…desde já agradeço ao pessoal que pode me ajudar…t++

acho que o caminho é por aqui:
Lembrando que é só o ponto de partida.

[code]
public static void main(String[] args) {
List nomes = new ArrayList();
List nomes2 = new ArrayList();
nomes.add(“Gionava Antoneli”);
nomes.add(“Adriana Esteves”);

	String tmp = nomes.get(0);
	String tmp1 = nomes.get(1);
	char c1 = tmp.charAt(0);
	char c2 = tmp1.charAt(0);
	if(c1==c2){
		nomes2.add(tmp);
		nomes2.add(tmp1);
	}else {
		nomes2.add(tmp1);
		nomes2.add(tmp);
	}
	for (Iterator iter = nomes.iterator(); iter.hasNext();) {
		String element = (String) iter.next();
		System.out.println(element);
	}
	System.out.println("\n");
	for (Iterator iter = nomes2.iterator(); iter.hasNext();) {
		String element = (String) iter.next();
		System.out.println(element);
	}
	
}[/code]