我有一个整数数组,它可能会遇到数十万(或更多),以数字升序排序,因为这是它们最初的堆叠方式。我是否需要为此实现一个b-tree搜索?
我需要能够查询该阵列得到一个号码>=
一些输入的其第一出现的索引,尽可能有效地。我不知道如何去做这件事的唯一方法就是遍历数组,直到它返回true,此时我会停止迭代。然而,这是解决这个问题的最昂贵的解决方案,我正在寻找最好的算法来解决这个问题。
我编码在Objective-C,但我给在JavaScript为例,拓宽人谁是能够应对观众。
// Sample set
var numbers = [1, 7, 23, 23, 23, 89, 1002, 1003];
var indexAfter100 = getIndexOfValueGreaterThan(100);
var indexAfter7 = getIndexOfValueGreaterThan(7);
// (indexAfter100 == 6) == true
// (indexAfter7 == 2) == true
把这个数据到数据库中,以便执行该搜索只会是一个不得已的解决方案,因为我希望看到某种算法在内存迅速解决这个。
我做有改变的数据结构,或以专卖店为我建立的阵列,因为我的计划已经由一个推每个号码一个到这个堆栈的附加数据结构的能力,所以我d只是修改将它们添加到堆栈的代码。在索引被添加到堆栈时搜索索引是不可能的,因为搜索操作将在事实之后经常以不同的值重复。
现在我在想“B-Tree”,但说实话,我不知道如何实现一个,在我离开之前就开始搞清楚了,我想知道是否有一个很好的算法适合这个单一用例更好?
谢谢。现在阅读。 – d11wtq 2010-10-24 13:49:56
这很简单,正是我正在寻找的那种算法,谢谢。现在,我只是在踢我自己,这几个小时前我的脑袋里并没有流行! :P – d11wtq 2010-10-24 13:51:52