按哈希值Perl的哈希值哈希值排序

前端之家收集整理的这篇文章主要介绍了按哈希值Perl的哈希值哈希值排序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个类似于以下的哈希结构:
KeyA => {
         Key1 => {
                   Key4 => 4
                   Key5 => 9
                   Key6 => 10
                 }
         Key2 => {
                   Key7 => 5
                   Key8 => 9
                 }
        }
KeyB => {
         Key3 => {
                   Key9 => 6
                   Key10 => 3
                 }
        }

我需要通过哈希结构打印遍历路径和遍历结束时的值,以便按值排序.
例如,对于上面的哈希结构,我需要打印:

KeyB Key3 Key10 3
KeyA Key1 Key4  4
KeyA Key2 Key7  5
KeyB Key3 Key9  6
KeyA Key2 Key8  9
KeyA Key1 Key5  9
KeyA Key1 Key6  10

目前,为了解决这个问题,我使用嵌套的foreach循环遍历哈希结构,并通过插入具有等于遍历路径的键的元素(例如“KeyA Key3 Key10”)来创建扁平哈希,并且值等于末尾的值.遍历路径(例如3),然后执行另一个foreach循环,按值对平顶散列进行排序.

有没有更有效的方法来做到这一点?

解决方法

考虑创建排序数组,而不是创建新哈希.迭代初始值,根据值,键值对插入到数组中,然后迭代生成的数组.对于最后一次迭代的每次插入O(n),这应该给出初始迭代O(lg n)的O(n).

猜你在找的Perl相关文章