我有一个类似于以下的哈希结构:
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).