Como classificar um TreeMap usando o tipo de bolha?
-
26-09-2019 - |
Pergunta
27527-683
27525-1179
27525-1571
27525-1813
27525-4911
27526-1303
27526-3641
27525-3989
27525-4083
27525-4670
27526-4102
27526-558
27527-2411
27527-4342
Esta é a lista de chave onde é declarada como string em um mapa
Então eu quero classificá -lo em ordem crescente.
Como posso usar um método de classificação de bolhas dentro de um mapa?
onde o valor da chave é uma lista. Para obter:
27525-1179
27525-1571
27525-1813
27525-3989
27525-4083
27525-4670
27525-4911
27526-558
27526-1303
27526-3641
27526-4102
27527-683
27527-2411
27527-4342
Solução
Você deve ser capaz de apenas realizar uma travessia em ordem em sua árvore. Bu se você insistir aqui é o que você faria.
keyList = yourTreeMap.getKeys();
for(i = keyList.length-1; i > 0; i--)
for(j = 0; j < i; j++)
if (keyList[j] > keyList[j+1]) keyList.swap(j, j+1);
Como você não especifica um lnaguage, apresento o PSUEDOCODE.
Outras dicas
Em geral, você apenas usa o mesmo algoritmo de classificação de bolhas normalmente, é apenas a sua condição de comparação que é ajustada aqui para olhar para a chave e o valor para determinar o que é maior do que o que é comparar as chaves primeiro e se elas são iguais, então Compare os valores Se as teclas não corresponderem, use a diferença nos valores para obter o resultado da troca ou não trocar. O tipo de bolha é ruim em termos de eficiência, se você estiver usando isso em um cenário do mundo real.
Jon conseguiu o post diante de mim, mas basicamente o que ele escreveu parece certo, exceto que você gostaria de uma condição complexa para o se dentro do loop aninhado, como
if(key1<key2)
keyList.swap(i,j)
else if(keyList[key1]<keyList[key2])
keyList.swap(i,j)
Obviamente, como ele também afirmou como essas chaves/valores são realmente extraídas/usadas dependerão do idioma, que falta na pergunta ou nas tags.