2015-11-08 4 views
0
aa = [ %w[Someone 1], 
     %w[Bla 2]] 

p aa.assoc("Someone") 
p aa.assoc("Bla") 

# Result: 
# ["Someone", "1"] 
# ["Bla", "2"] 

p aa.rassoc("1") 
p aa.rassoc("2") 

# Result: 
# ["Someone", "1"] 
# ["Bla", "2"] 

является рубиновым массивом хэш-таблиц внутри? какова сложность времени поиска? , например, это линейный вызов или O (1) aa.assoc («Кто-то»)- это массив рубиновых массивов хэш-таблицы внутри? какова сложность времени поиска?

благодарит

+0

О (п) в [CRuby] (http://ruby-doc.org/core-2.2.0/Array.html#method-i-assoc). Btw. Я бы не стал полагаться на текущие/конкретные детали реализации, если только это явно не упоминается в официальных документах. – joanbm

ответ

1

Это обсуждение предполагает, что линейный поиск, а не хэш-таблицы: http://error.news/question/4883140/does-ruby-arrayassoc-use-linear-search/

Это делает потому что тип данных, который вы инициализируете, является просто массивом. assoc() - это просто функция, работающая над ним.

Существует тип данных Хэш хотя: http://ruby-doc.org/core-1.9.3/Hash.html

Смежные вопросы