for(i=fim-1;i>0;i--) {System.out.println("Estado do vetor no inicio do passo i = "+i);imprimeArray(numeros);for(j=1;j<=i;j++){if(numeros[j-1]>numeros[j]){temp=numeros[j-1];numeros[j-1]=numeros[j];numeros[j]=temp;}}System.out.println("Estado do vetor no fim passo i = "+i);imprimeArray(numeros);System.out.println("-----------------------------------------");}
Não deveria ser listaDeClientes[i].getNome().charAt(0)?
Outra coisa, é melhor na classe Cliente implementar Comparable<Cliente> e depois usar o método Collections.sort ou Arrays.sort para fazer a ordenação automaticamente. Sem o processo da bolha, que é muito ineficiente.
Ou então, comparar os nomes do cliente usando o método compareTo, da classe String, que leva em consideração não só o primeiro caracter da String, como os outros também.
Compare a ordenação gerada pelo seu algoritmo (sem o Collator) e com esse aqui. Você vai ver que com o Collator a ordenação fica natural, como num dicionário, agrupando palavras acentuadas juntas, e desprezando o fato das letras serem maiúsculas e minúsculas ao odena-las. :)