【问题标题】:which one is faster binarysearch or indexof?哪个是更快的二进制搜索或 indexof?
【发布时间】:2016-01-23 22:17:17
【问题描述】:

我在 C# 中有一个非常大的字符串 ArrayList,并且我会定期在这个 ArrayList 中搜索一个字符串。哪个更快,使用ArrayList.IndexOf()ArrayList.BinarySearch()?我可以对 ArrayList 进行排序。

【问题讨论】:

  • 你有任何初步的性能测量吗?
  • 阅读传说中的Which is faster?
  • 你会在列表中搜索多少次?
  • 使用其他数据结构如 HashSet 怎么样? ( O(1) )
  • 感谢您的 cmets。 arraylist 充满了字符串,基本上是数百万。我已经使用哈希表对元素进行排序并使用键值对。但是每个键的值仍然是一个数组列表,我仍然必须在数组列表中搜索特定元素。我多次搜索元素,因为它就像一种检查元素是否在列表中可用的方法。

标签: c# performance arraylist binary-search indexof


【解决方案1】:

文档为您解释了一切。

来自ArrayList.BinarySearch

ArrayList 的元素必须已经排序 根据 IComparable 定义的排序顺序的值 执行;否则,结果可能不正确。

这个方法是一个O(log n)运算,其中n是Count。

来自ArrayList.IndexOf

此方法执行线性搜索;因此,这种方法是一种 O(n) 运算,其中 n 为 Count。

【讨论】:

  • 在这种情况下,BinarySearch 可能更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2013-06-20
  • 2011-05-02
  • 1970-01-01
  • 2014-07-15
  • 2013-03-17
相关资源
最近更新 更多