Ruby中|=的复杂性

Ruby中|=的复杂性,ruby,time-complexity,Ruby,Time Complexity,此操作的复杂性(大O)是多少: my_数组|=[新元素] 是因为它需要通过现有的数组检查是否存在新的元素吗。 看看 rb\u-ary\u或 static VALUE rb_ary_or(VALUE ary1, VALUE ary2) { VALUE hash, ary3; long i; ary2 = to_ary(ary2); hash = ary_make_hash(ary1); for (i=0; i<RARRAY_LEN(ary2

此操作的复杂性(大O)是多少:

my_数组|=[新元素]


是因为它需要通过现有的数组检查是否存在新的元素吗。 看看

rb\u-ary\u或

static VALUE
rb_ary_or(VALUE ary1, VALUE ary2)
{
    VALUE hash, ary3;
    long i;

    ary2 = to_ary(ary2);
    hash = ary_make_hash(ary1);

    for (i=0; i<RARRAY_LEN(ary2); i++) {
        VALUE elt = RARRAY_AREF(ary2, i);
        if (!st_update(RHASH_TBL_RAW(hash), (st_data_t)elt, ary_hash_orset, (st_data_t)elt)) {
            RB_OBJ_WRITTEN(hash, Qundef, elt);
        }
    }
    ary3 = rb_hash_values(hash);
    ary_recycle_hash(hash);
    return ary3;
}
静态值
rb_ary_或(值ary1,值ary2)
{
值散列,ary3;
龙我;
ary2=至ary(ary2);
散列=ary\u make\u散列(ary1);

对于(i=0;iYes,使用文档中的“toogle code”选项-您将看到有两个循环在数组中迭代,使得散列不是O(n),因为散列有一个(小)对数元素,它贡献了O(n*log(n))总体而言,我的观点是,我应该参考我所提到的内容。然而,我发现这样的讨论毫无意义,我将尊重你的自以为是的形式观察。