Método bolha com String

Estou com dúvida com o método bolha para String, com int dá certo:

class ordena{

void bolha(int [] numeros){
int i, j, temp;
int fim = numeros.length;

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("-----------------------------------------");
}

}
}

Mas como posso substituir por String [] nomes???

Cara em primeiro lugar utiliza a tag code para facilitar o entendimento.

depois da uma olhada nesse codigo aqui:

[code]public class BolhaNaString {

public static void main(String args[]){
	String [] nomes = {"Orruda","Lulinha","Dilma Roussef"};		
	String aux = "";
	int valor1=0, valor2=0;
	int i,j;
	for(i=3;i>0;i--){
		for(j=1;j<3;j++){
			valor1 = nomes[j].charAt(0);
			valor2 = nomes[j-1].charAt(0);
			if(valor2 > valor1){
				aux = nomes[j-1];
				nomes[j-1] = nomes[j];
				nomes[j] = aux;
			}
		}
	}
	
	for(i=0;i<3;i++){
		System.out.println(nomes[i]);
	}
}

}
[/code]

Vê se resolve seu problema ai, se não resolver tenta dessa forma(recomendo):

[code]import java.util.Arrays;

public class Ordenacao{
public static void main(String …args){
String nomes[] = {“Orruda”,“Joao”,“Bastiao”};

	Arrays.sort(nomes);
	
	for(int i=0;i<3;i++){
		System.out.println(nomes[i] + "\n");
	}
}

}[/code]

flwssssss

Esse tópico foi aberto a pouco tempo atrás… duas vezes…
dá uma olhada:
http://www.guj.com.br/posts/list/91903.java
http://www.guj.com.br/posts/list/91892.java

Por isso é bom usar a busca do fórum antes de perguntar. :wink:

Vocês são todos da mesma turma?
Talvez fosse uma boa conversar com os colegas também…

Então eu fiz algo parecido, mas tá dando erro de compilação nessa parte:

    pos1 = listaDeClientes[i].charAt(0);
    pos2 = listaDeClientes[j].charAt(0);

O método todo é esse:

void ordenaLista() {
Cliente aux;
int pos1 = 0;
int pos2 = 0;
for (int i = 0; i < listaDeClientes.length; i++) {
for (int j = i + 1; j < listaDeClientes.length; j++) {
pos1 = listaDeClientes[i].charAt(0);
pos2 = listaDeClientes[j].charAt(0);
if (pos1 > pos2) {
aux = listaDeClientes[j];
listaDeClientes[j] = listaDeClientes[i];
listaDeClientes[i] = aux;
}
}
}
}

Obs: a listaDeClientes já está apresentada no meu programa

Como já foi pedido, use a tag code… ou ninguém vai ler o seu código por aqui. Se você não sabe fazer isso, leia esse tópico:
http://www.guj.com.br/posts/list/50115.java

A classe Cliente tem o método charAt???

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.

Tem exemplos disso no primeiro link que te passei ali em cima. E você pode ler mais sobre o assunto aqui:
http://www.guj.com.br/posts/list/45985.java#241201

Melhor ainda é fazer assim, para Strings:

[code]import java.util.Arrays;

public class Ordenacao{
public static void main(String …args){
String nomes[] = {“Arruda”,“João”,“Álbano”, “Bastião”, “Éster”, “Eduardo”, “bruno”};

    Arrays.sort(nomes, Collator.getInstance());   
       
    for(int i=0;i<3;i++){   
        System.out.println(nomes[i] + "\n");   
    }   
}   

} [/code]

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. :slight_smile:

Valeu cara vivendo e aprendendo!!!

falws