25得票5回答
在对象中实现二分查找

有没有办法在对象ArrayList中实现二分查找?在这个例子中,ArrayList将根据字段'id'进行排序。class User{ public int id; public string name; } ArrayList<User> users = new ArrayL...

25得票5回答
当集合有序时,LINQ是否可以使用二分搜索?

如果我要搜索的集合已经排序过了,我是否可以“指示”LINQ使用二分查找。我正在使用一个填充有有序数据的ObservableCollection<T>,并尝试使用Enumerable.First(<Predicate>)方法。在我的谓词中,我按照我的集合排序的字段值进行过滤。

24得票5回答
二分插入排序

在实现插入排序时,可以使用二分查找来定位数组的前i-1个元素中应将第i个元素插入到哪个位置。 这会如何影响所需的比较次数?使用这样的二分查找会如何影响插入排序的渐进运行时间? 我相当确定这会减少比较次数,但我不确定为什么。

23得票3回答
黄金分割搜索比二分搜索更好吗?

最近我听到了一个观点,即在二分查找中,通过使用黄金比例(phi)而不是2来划分范围可能会提高效率。这对我来说很惊讶,因为我从未听说过这种优化。这是真的吗?如果除以2和phi的性能相同,这个观点是否成立? 如果不是,那么有没有一般的条件使得黄金分割搜索比二分搜索更快? 更新:已编辑删除与非相...

22得票3回答
何时在二分搜索条件中使用“=”?

我对二分查找中何时使用=感到很困惑。例如,这是我从维基百科上找到的一个示例,在其中使用 (imin <= imax):int binary_search(int A[], int key, int imin, int imax) { // continue searching whi...

22得票4回答
C# lambda表达式和IComparer

我正在使用Lambda表达式在C#中对一个数组进行排序和搜索。 我不想在我的类中实现IComparer接口,因为我需要在多个成员字段上进行排序和搜索。 class Widget { public int foo; public void Bar() { ...

22得票4回答
N个关键字可以创建的二叉搜索树的可能数量由第N个卡特兰数给出。为什么?

这个问题困扰我已经有一段时间了。我知道,如果给定N个键以二叉搜索树的形式排列,可以创建的可能树的数量对应于卡特兰数列中的第N个数字。 我一直在试图确定为什么会这样; 无法找到任何尝试直观解释它的东西,我求助于SO的集体知识。我发现了其他计算可能树的数量的方法,但它们似乎不太直观,并且没有提供...

21得票9回答
Java中等价于C++的equal_range(或lower_bound和upper_bound)函数

我有一个已排序的对象列表,并且我想要找到一个对象的第一次出现和最后一次出现。在C++中,我可以轻松使用std::equal_range(或只使用一个lower_bound和一个upper_bound)。 例如:bool mygreater (int i,int j) { return (i&...

21得票2回答
二分查找终止条件

无论我如何进行迭代二分搜索,我总是困惑是否应该使用while (low < high)还是while(low <= high)。虽然两者都可以工作,但有人能告诉我一个比另一个更实用的优点吗?

21得票3回答
partition_point和lower_bound有什么区别?

C++11包括算法std::partition_point()。但是,对于我尝试过的所有情况,它都会给出与std::lower_bound()相同的答案。唯一的区别是方便的T& value参数。 我有遗漏还是这两个函数做的事情或多或少相同?