| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/08/2011 19:53:22
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Você só precisa escrever uma função que, dada duas Strings, diga se uma é maior, menor ou igual a outra. Por exemplo vamos supor que, ao invés de ordenar uma sequencia por ordem alfabética, você queira ordenar pelo tamanho das palavras. O comparador seria implementado assim: Então, seria fácil ordenar esse array: Para uma ordenação lexicográfica, como vc quer, eu faria assim: 1. Todo char é implementado como um número, sendo o A maiusculo o 65. Portanto 'A'-65 = 0; 2. Portanto, é possível montar um array de inteiros, contendo a posição das letras na ordem que você deseja. Vamos supor, que seu alfabeto seja A, B, C, D, e você queria na ordem B, A, D, C. Esse array seria: 3. Para cada letra i, nas duas palavras: 1. Obtém-se o índice da i-ésima letra através da formula: índice = Código ascii da letra - 65 2. Compara-se o valor ordem[i] de cada palavra. Se o valor da primeira palavra for < que o da segunda, retorna-se -1. Se o da segunda for maior que o da primeira, retorna-se 1. Caso contrário, adicione um ao i e prossiga para a próxima letra. Se todas as letras forem iguais: 3. Retorna-se -1 caso a palavra 1 seja menor que a palavra 2, retorna-se 1 caso a palavra 2 seja menor que a palavra 1, ou 0 se forem iguais. Vamos supor as palavras CADA e CACACA 1ª letra: Palavra 1: Índice de C = 67 - 65 = 2. Palavra 2: Índice de C = 67 - 65 = 2. Como ordem[2] == ordem[2] == 4, então, continua-se o algorítmo 2ª letra: Palavra 1: Índice de A = 65 - 65 = 0. Palavra 2: Índice de A = 65 - 65 = 0. Como ordem[0] == ordem[0] == 2, então, continua-se o algorítmo 3ª letra: Palavra 1: Índice de D = 68 - 65 = 3. Palavra 2: Índice de C = 67 - 65 = 2. Como ordem[3] = 3 e ordem[2] = 4, logo palavra 1 < palavra 2. Portanto, o algorítmo retorna -1. (Note que acamos que indicar que o "D" precede o "C", como queríamos). Isso me lembra um exercício do google que discuti com o Mark há alguns dias atrás.
This message was edited 4 times. Last update was at 21/08/2011 19:57:26
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/08/2011 20:02:30
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
PS: Caso você trabalhe com Unicode, pode ser interessante definir a tabela de ordem num Map<Character, Integer>, ao invés de um array de primitivos. Assim, o próprio char poderia ser a entrada do map:
A mesma tabela de ordem ficaria:
E isso também evitaria calculos, por exemplo:
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/08/2011 20:17:04
|
Algebra
Java Ninja
![[Avatar]](/images/avatar/aa3033f10280fc120dbec5f3877dbcfa.jpg)
Membro desde: 10/06/2008 08:37:36
Mensagens: 284
Offline
|
Com Map eu já consegui ordenando só pela primeira letra da palavra, mas como já te disse quero ordenar por todas as letras da palavra na sequencia que eu defini e não consigo enxergar isso. :p
|
Artificial Inteligence - Knowledge Engineering |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/08/2011 20:19:41
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Releia o meu post. Eu descrevi detalhadamente um algorítmo que considera cada uma das letras da palavra, e ainda postei um exemplo de como vc deve fazer a comparação...
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/08/2011 20:33:03
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Segue um exemplo do algorítmo implementado: Se quiser definir uma nova ordem para as letras, simplesmente altere o map.
This message was edited 5 times. Last update was at 21/08/2011 20:36:46
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/08/2011 20:38:56
|
Algebra
Java Ninja
![[Avatar]](/images/avatar/aa3033f10280fc120dbec5f3877dbcfa.jpg)
Membro desde: 10/06/2008 08:37:36
Mensagens: 284
Offline
|
Muito obrigado Vini, pois é exatamente por causa da provinha do Developer's day do Google que eu estou tentando implementar este algoritmo.
|
Artificial Inteligence - Knowledge Engineering |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/08/2011 20:41:07
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Algebra wrote:Muito obrigado Vini, pois é exatamente por causa da provinha do Developer's day do Google que eu estou tentando implementar este algoritmo.
Pois é, mas adianta receber a resposta pronta do GUJ?
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/08/2011 20:43:21
|
Algebra
Java Ninja
![[Avatar]](/images/avatar/aa3033f10280fc120dbec5f3877dbcfa.jpg)
Membro desde: 10/06/2008 08:37:36
Mensagens: 284
Offline
|
Eu já fiz a prova há alguns dias atrás porém, esta questão eu não consegui resolver e agora não quero permanecer na ignorância, quero entender como se faz mesmo com ajuda de alguém, afinal é para isso que servem os fóruns né!
Muito obrigado pela ajuda.
Abraços.
|
Artificial Inteligence - Knowledge Engineering |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/08/2011 20:45:02
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
No caso do Developers Day, ele pedia também para descartar as duplicatas. Isso é bem fácil, simplesmente use um TreeSet: Note que o set também ordena.
This message was edited 2 times. Last update was at 21/08/2011 20:45:37
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
|
|