【问题标题】:how to sort a treemap using bubble sort?如何使用冒泡排序对树状图进行排序?
【发布时间】:2011-01-06 07:36:06
【问题描述】:

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

【问题讨论】:

  • 冒泡排序就像是最差的排序,树形结构应该是你需要做的就是有序遍历。不过,如果你坚持,我会发布一个答案
  • 地图是什么语言的?这种语言是否有保留键顺序的映射?你到底有什么问题?
  • 你能解释一下第一个列表是什么吗?这是一个键/值对列表,它们按照它们在 TreeMap 中出现的顺序排列吗?还是那些是 TreeMap 中的值?
  • 好的做法是将您的问题标记为家庭作业...还要指定一种语言,除非您要求纯算法/方法。

标签: sorting map treemap bubble-sort


【解决方案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);

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

【讨论】:

  • 你不应该。如果你真的有一个树状图,你应该做yourTreeMap.keySet().toArray() 并使用Arrays.sort对结果进行排序
  • 你想做什么?你想要这个数组做什么?
  • java.util.TreeMap.keySet() 已经按升序返回键。无需再次排序。
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2013-10-31
    • 2019-05-10
    • 2017-09-27
    • 2022-01-25
    • 2019-04-14
    • 2020-07-17
    • 2021-12-31
    • 1970-01-01
    • 2020-05-17
    相关资源
    最近更新 更多