我可以帮助您翻译关于IT技术的内容,以下是需要翻译的内容:
一个连续的数组会产生一个数据结构,就像这样:
我需要一些帮助来编写一个C/C++算法(任何语言示例都可以)。其目的是创建一个容器/数组,允许在任何索引处插入。但是,如果在不靠近现有索引的位置插入元素,即会导致大量空桶,则该数组将使空桶最小化。
假设您有一组需要插入以下索引的元素:
14
54
56
57
12
8
6
5678
一个连续的数组会产生一个数据结构,就像这样:
0
1
2
3
4
5
6 val
7
8 val
9
10
11
12 val
...
然而,我正在寻找一种解决方案,当一个索引不在其最近邻居的x个桶之内时,创建一个新的数组。
类似于这样:
Array1
6 val
7
8 val
10
11
12 val
13
14 val
Array2
54 val
56 val
57 val
Array 3
5678 val
然后使用某种索引映射来在查找期间找到索引所在的数组。我的问题是,在插入期间应该寻找什么样的算法来将索引分组?(同时保持良好的空间/时间平衡)
编辑: 感谢迄今为止提供的答案。我将要查看的数据将包含一个或两个非常大的索引范围,没有间隙,然后是一个或两个非常大的间隙,然后可能还有几个“散乱”的单个值。此外,数据需要排序,因此哈希表不适用。