0

27527-683
27525-1179
27525-1571
27525-1813
27525-4911
27526-1303
27526-3641
27525-3989
27525-4089
27525-4083 27525-4670
_ _ _


这是在地图中声明为字符串的键列表,
然后我想按升序对其进行排序。
如何在地图中使用冒泡排序方法?
其中键的值是一个列表。为了得到 :

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

4

2 回答 2

1

您应该能够在树上执行有序遍历。但是,如果你坚持这里就是你会做的。

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

由于您没有指定语言,因此我提供伪代码。

于 2011-01-06T07:41:21.607 回答
0

一般来说,您只需使用与正常相同的冒泡排序算法,只是您的比较条件在此处进行了调整,以查看键和值以确定什么大于什么,即首先比较键,如果它们相等则如果键不匹配,则比较值,然后使用值的差异来获得交换或不交换的结果。冒泡排序在效率方面很差,但如果您在现实世界的场景中使用它。

乔恩在我之前收到了这篇文章,但基本上他写的内容看起来是正确的,除了你想要嵌套循环中的 if 有一个复杂的条件,比如

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

当然,正如他还指出如何实际提取/使用这些键/值将取决于问题或标签中缺少的语言。

于 2011-01-06T07:49:22.077 回答