映射两组元素
|
有一组索引为[0,n]的元素。在任何时候,A集合中最多m个元素可以处于活动状态(使用中),明显的条件是0 <= m <= n。我想索引本地数组内的那些活动元素。可以在程序执行时动态停用元素,并且我希望在激活新元素时可以重新使用其索引。
我想以最有效的方式将元素索引映射到它的本地索引,因为我正在使用本地索引来快速查找活动元素数据。
平凡的哈希函数(元素索引==本地索引)和通过关联列表的强行强制的可能解决方案在n较大时无法很好地扩展。
动态扩展/收缩数据结构是显而易见的优势。
谢谢
没有找到相关结果
已邀请:
1 个回复
博沮富教全
2带有链接列表的数组 创建一个带有指向链接列表的指针的数组。 散列索引,它指向您的数组项。 遍历链接列表,直到找到正确的项目。 对于插入项目:执行步骤1和2,并在开始处插入您的项目。 这对于索引非常随机且碰撞变化很小的数据最有效。 成功与否主要取决于您的哈希函数,它需要尽可能多地选择一个不同的数组条目,太多的“ 1”,您将一直无时无刻不在遍历相同的链表。 链接列表数组的示例代码
3二叉树使用索引中的位遍历树 创建一个只有根的空树 如果要插入项目,请使用索引中的位遍历树(0 =左分支,1 =右分支)。 在遍历树时,将较高等级的索引附加在下方,而将较高等级的索引插入较高的索引。 (重物沉入底部)。 使用二叉树的示例代码
推荐阅读: Knuth:TAOCP I:基本算法,第2章ISBN 0-201-03809-9 Cormen,Leiserson和Rivest:算法简介,第三章数据结构ISBN 0-07-013143-0