Как отсортировать древовидную карту с помощью пузырьковой сортировки? - PullRequest
0 голосов
/ 06 января 2011

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

это список ключей, где он объявленкак строка на карте
, затем я хочу отсортировать ее в порядке возрастания.
как я могу использовать метод сортировки пузырьков внутри карты?
, где значение ключа является списком.чтобы получить:

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

Ответы [ 2 ]

1 голос
/ 06 января 2011

Вы должны иметь возможность просто выполнить обход вашего порядка. Но если ты настаиваешь, вот что ты сделал бы.

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);

Поскольку вы не указываете язык, я представляю psuedocode.

0 голосов
/ 06 января 2011

Как правило, вы просто используете тот же алгоритм пузырьковой сортировки, что и в обычном режиме. Здесь просто настроено условие сравнения, чтобы посмотреть и ключ, и значение, чтобы определить, что больше, чем что, то есть сначала сравнить ключи, и если они ' затем сравните значения, затем сравните значения, если ключи не совпадают, затем используйте разницу в значениях, чтобы получить результат обмена или не менять. Хотя пузырьковая сортировка плоха с точки зрения эффективности, если вы используете ее в реальном сценарии.

Джон получил пост до меня, но в основном то, что он написал, выглядит правильно, за исключением того, что вы хотите сложное условие для if внутри вложенного цикла, например

if(key1<key2)
    keyList.swap(i,j)
else if(keyList[key1]<keyList[key2])
    keyList.swap(i,j)

конечно, поскольку он также заявил, как эти ключи / значения фактически извлекаются / используются, будет зависеть от языка, которого нет в вопросе или тегах.

...