避免使用索引项的重复条目

avoiding duplicate entries using index items

本文关键字:索引      更新时间:2023-10-16

我正在读robert sedwick关于算法的书中关于队列的内容

当数据结构中的项本身是数组索引时我们将此类项目称为"索引项目"。通常,我们有一组M对象,保存在另一个数组中,我们需要通过广义队列结构作为更复杂算法的一部分。对象按索引放在队列中,并在移除,并且每个对象将被精确地处理一次。通常队列中没有重复项的数组索引实现了这一目标直接地

我在最后一句中的问题是"对象按索引放在队列中,当它们被移除时进行处理,并且每个对象都要精确地处理一次"?我们只使用一个数组而不是两个数组?

作者所说的"通常在没有重复的队列中数组索引直接实现了这个目标"是什么意思?

感谢您的时间和帮助

好吧,作者想解决处理存储在数组中的数据的算法任务:

       +-----+-----+---------+-----+
Data = | Foo | Bar | Grandma | Zip |
       +-----+-----+---------+-----+

我们需要按照算法确定的某种顺序处理这些数据,接下来我们要处理一些"待办事项"队列。复制实际的数据对象可能是不希望的或不可能的(对象可能很大或不可复制)。索引的队列起到了作用:

             --+---+---+--
ToDo = [2] --> | 0 | 3 | -----> (1)
             --+---+---+--/

队列告诉我们Data[1]是下一个要处理的项目。Data[3]Data[0]正在等待,我们刚刚决定Data[2]作为最近的任务出现。

(例如,队列用于树结构的广度优先搜索:您从一侧的队列中弹出下一个要访问的节点,并在另一侧推送该节点的子节点,以备将来使用。每个节点应该只访问一次。上述索引队列允许您将实际树元素存储在Data数组中,并通过ly)