一尘不染

如何在NSArray上执行二进制搜索?

algorithm

在已(已排序)的排序上执行二进制搜索的最简单方法是什么NSArray

到目前为止,我发现的一些潜在方法包括:

  1. 采用CFArrayBSearchValues(提到这里) -将上这项工作NSArray

  2. 该方法indexOfObject:inSortedRange:options:usingComparator:NSArray假定数组进行排序,并采取一种opts类型的PARAM NSBinarySearchingOptions-这意味着它执行二进制搜索?该文档只是说:

使用给定的NSComparator块,将对象在指定范围内的索引与数组中的元素相比返回。

  1. 写我自己的二进制搜索方法(类似this)。

我应该补充一点,我正在为iOS 4.3+编程

提前致谢。


阅读 207

收藏
2020-07-28

共1个答案

一尘不染

1和2都可以。#2可能更容易;除了二进制搜索(如果范围大于某个大小),该方法当然没有任何意义。您可以在大型阵列上验证它仅进行少量比较。

2020-07-28