Ruby中|=的复杂性
此操作的复杂性(大O)是多少: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
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))总体而言,我的观点是,我应该参考我所提到的内容。然而,我发现这样的讨论毫无意义,我将尊重你的自以为是的形式观察。