【发布时间】:2013-11-25 19:37:16
【问题描述】:
我有一个应用程序,它允许用户通过简单地定义每个元素的索引来定义元素的顺序(元素是在运行时加载的 xml 文件)。
规则很简单,索引越高,层堆栈中的元素越高(就像CSS中的z-index)。 但是如果在同一个索引中有 2 个元素,我必须在现有元素之后添加最后一个元素。而且,如果采用新的计算索引,我必须移动列表的内容以放置新项目。而这个,递归的。
这是结构的示例:
+---+--------------+
| 1 | lowest item |
+---+--------------+
| 2 | lower item |
+---+--------------+ <== if I add an element at the index 3, there is no problem
| 4 | higher item |
+---+--------------+
| 9 | highest item |
+---+--------------+
但是,如果索引 3 已经被占用,我必须在索引 4 之后插入新项目。如果 4 也已经被占用,我必须将现有的 4 移动到索引 5 以放置新项目,而这个,递归......
+---+---------------+ +---+-------------------+
| 1 | item 1 | | 1 | item 1 |
+---+---------------+ +---+-------------------+
| 2 | item 2 | | 2 | item 2 |
+---+---------------+ +---+-------------------+
| 3 | already taken | ==> | 3 | already taken |
+---+---------------+ +---+-------------------+
| 4 | item 4 | | 4 | << NEW ITEM 3 >> |
+---+---------------+ +---+-------------------+
| 9 | item 5 | | 5 | previously item 4 |
+---+---------------+ +---+-------------------+
| 9 | item 5 |
+---+-------------------+
元素的数量可以变化,并且列表并不总是以索引 1 开头。
例如,列表可以包含索引:1, 2, 3, 5, 10 以及 30, 32, 52, 9999。
我尝试了很多方法,以至于我的大脑受伤了。我迷失在所有这些递归函数中,甚至不起作用。 如果有人知道执行这种重新排序的工作方式,那就太好了。
【问题讨论】:
标签: arrays actionscript-3 apache-flex recursion