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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top