Matlab中单元矩阵的Binsearch

时间:2014-03-16 09:36:18

标签: arrays matlab binary-search cell-array

我有一个2行的单元格矩阵 - 不同字符串和数组数组的单元格数组。我还有一个示例字符串。保证此字符串出现在单元格数组的第1行中。我想在字符串的单元格数组中获得示例的外观索引。

Matlab中是否有任何函数可以提供对数复杂度的求解(如二进制搜索)?

1 个答案:

答案 0 :(得分:0)

如果您查看ismember代码(类型open ismember),您会发现它基本上

  1. 检查数组是否已排序(通过调用issorted);
  2. 如果没有,则对数组进行排序;
  3. 然后它应用二进制搜索。
  4. 所以你可以直接使用ismember

    示例:

    >> strings = {'a', 'aa', 'be', 'day', 'yes'};
    >> [tf, loc ] = ismember('day', strings);
    >> loc
    loc =
         4
    

    或者修改ismember以其他名称保存)以绕过第1步,因为您已经知道您的数组已经过排序。