什么是Array#包含的算法?使用?

时间:2012-01-27 01:16:58

标签: ruby arrays

对于x是数组的ruby,x.include?(y)如何检查y中是否x?算法是什么?

2 个答案:

答案 0 :(得分:6)

作为Greg Hewgill回答的补充,Ruby 1.9.3中针对此方法的源代码是:

VALUE
rb_ary_includes(VALUE ary, VALUE item)
{
    long i;

    for (i=0; i<RARRAY_LEN(ary); i++) {
        if (rb_equal(RARRAY_PTR(ary)[i], item)) {
            return Qtrue;
        }
    }
    return Qfalse;
}

因此,正如Greg所说,算法只是通过数组的线性搜索。

答案 1 :(得分:3)

由于数组不必排序,因此算法不能比“查看每个元素并查看它是否匹配”更好。