Data structures 有这样的数据结构吗?“;“带样本的链接列表”;

Data structures 有这样的数据结构吗?“;“带样本的链接列表”;,data-structures,linked-list,Data Structures,Linked List,是否存在这样的数据结构: 存在慢速列表数据结构,例如链表或磁盘上保存的数据 指向“慢列表”中某些元素的指针数组相对较小,有望均匀分布 然后在执行搜索时,首先检查数组,然后执行常规搜索(对于磁盘数据,则执行链表搜索或二进制搜索) 这看起来非常类似于跳转搜索,示例搜索和跳过列表,但我认为是不同的算法 请注意,我举的例子是链接列表或磁盘上的文件,因为它们的结构很慢。我不知道这个算法是否有名字(我认为它不值得一个,尽管如果没有,它可能会承载我的:),但我在10年前的一次采访中实现了类似的东西 您可以拥有

是否存在这样的数据结构:

  • 存在慢速列表数据结构,例如
    链表
    磁盘上保存的数据
  • 指向“慢列表”中某些元素的指针数组相对较小,有望均匀分布
  • 然后在执行搜索时,首先检查数组,然后执行常规搜索(对于磁盘数据,则执行链表搜索或二进制搜索)

    这看起来非常类似于
    跳转搜索
    示例搜索
    跳过列表
    ,但我认为是不同的算法


    请注意,我举的例子是
    链接列表
    或磁盘上的文件,因为它们的结构很慢。

    我不知道这个算法是否有名字(我认为它不值得一个,尽管如果没有,它可能会承载我的:),但我在10年前的一次采访中实现了类似的东西

    您可以拥有指向列表元素的指针数组。固定大小的数组,例如256个指针。当您第一次构造或遍历列表时,会在数组中存储指向其元素的指针。因此,对于256个或更少元素的列表,每个元素都有一个指针

    当列表超过256个元素时,通过将128个偶数指针移动到数组的开头,可以删除每个奇数指针。当指针数组再次填满时,重复该过程。在每一个这样的点上,地址在指针数组中结束的列表元素之间的步长加倍。最初,您会将每个元素的地址放在那里,然后是其他元素的地址,然后是四分之一的地址,依此类推

    最后是指向列表元素的指针数组,这些元素之间的间隔为列表长度/256

    如果列表是单链接的,则从列表的开头或结尾查找第i个元素将减少为在列表的1/256中搜索。
    如果列表已排序,您可以在数组上执行二进制搜索,以找到要进一步查找的bin(列表的1/256部分)。

    您是否在寻找一种以特定编程语言(如Java或C)作为库存在的数据结构?还是你的问题比较笼统?您似乎已经用抽象的术语描述了数据结构。