ruby, когда мы передаем более 4 значений в наборе, как это расположить это значение в наборе - PullRequest
3 голосов
/ 09 февраля 2012
 Set.new

=> #<Set: {}>

irb(main):003:0> Set[1,2,3,4,5,6]

=> #<Set: {5, 6, 1, 2, 3, 4}>

irb(main):004:0> Set[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

=> #<Set: {5, 11, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10}>

irb(main):005:0> Set[1,2,3,4,5,6,7,8,9,10]

=> #<Set: {5, 6, 1, 7, 2, 8, 3, 9, 4, 10}>

irb(main):006:0> Set[1,2,3,4,5]

=> #<Set: {5, 1, 2, 3, 4}>

irb(main):007:0> Set[1,2,3,4]

=> #<Set: {1, 2, 3, 4}>

irb(main):008:0> Set[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]

=> #<Set: {16, 5, 11, 17, 6, 12, 1, 18, 7, 13, 2, 19, 8, 14, 3, 20, 9, 15, 4, 10}>

irb(main):009:0> Set[1,2,4,5,3,7]

=> #<Set: {5, 1, 7, 2, 3, 4}>

Я хочу знать, какой алгоритм использует Ruby для ввода значений в наборах

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

http://www.ruby -doc.org / STDLIB-1.9.3 / libdoc / комплект / RDoc / SortedSet.html SortedSet реализует Set, который гарантирует, что его элемент получен в отсортированном порядке

0 голосов
/ 09 февраля 2012

Вы сказали "на языке ничего не генерируется без порядка" , но это не так.Хэши генерируются без порядка.

В Ruby 1.9, тем не менее, добавлена ​​дополнительная инфраструктура поверх хэшей, чтобы дать им порядок вставки, который используется при итерации (это означает, что даже если они хранятся неупорядоченными, они по существуподдерживать связанный список, который они могут использовать при прохождении). Поскольку наборы реализованы с помощью хэшей, они будут неупорядочены в 1.8 и упорядочены в 1.9 , но вы не должны полагаться на этот порядок (в противном случае это не набор, а массив списков на языке Ruby).

Здесь - простой пример реализации хэша.

В этой статье обсуждается, как добавляется порядок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...