Как разделить разграниченную строку в Ruby и преобразовать его в массив?

Верхняя и нижняя границы имеют отношение к минимальной и максимальной «сложности» алгоритма (я использую это слово заранее, поскольку оно имеет очень специфическое значение при анализе сложности).

Возьмите, к примеру, нашего старого друга, пузырьковую разновидность. В идеальном случае, когда все данные уже отсортированы, требуется время f (n), функция зависит от n, количества элементов в списке. Это потому, что вам нужно сделать только один проход набора данных (с нулевыми перестановками), чтобы убедиться, что ваш список отсортирован.

В особенно плохом случае, когда данные сортируются в порядке, обратном желаемому, требуемое время становится f (n 2 ). Это происходит потому, что каждый проход перемещает один элемент в нужную позицию, и вам нужно n проходов, чтобы выполнить все элементы.

В этом случае верхняя и нижняя границы различны, хотя сложность big-O остается неизменной.

Кроме того, пузырьковая сортировка сильно порочна (обычно по уважительным причинам), но может иметь смысл в определенных обстоятельствах. Я на самом деле использую его в приложении, где большая часть данных уже отсортирована и только один или два элемента, как правило, добавляются за один раз в конец списка. Для добавления одного элемента и с пузырьковой сортировкой в ​​обратном направлении вы можете гарантировать, что новый список будет отсортирован за один проход. Это иллюстрирует концепцию нижней границы.

Фактически, вы могли бы сделать оптимизацию пузырьковой сортировки, которая устанавливает нижнюю границу для f (1), просто предоставив дополнительную информацию, которая указывает, отсортирован ли список. Вы должны установить это после сортировки и очистить при добавлении элемента в конец.

226
задан A.D. 11 January 2017 в 16:39
поделиться

2 ответа

>> "1,2,3,4".split(",")
=> ["1", "2", "3", "4"]

Или для целых чисел:

>> "1,2,3,4".split(",").map { |s| s.to_i }
=> [1, 2, 3, 4]

Или для более поздних версий ruby ​​(> = 1.9 - как указал Алекс):

>> "1,2,3,4".split(",").map(&:to_i)
=> [1, 2, 3, 4]
403
ответ дан 23 November 2019 в 03:52
поделиться

"1,2,3,4" .split (",") как строки

"1,2,3,4" .split (" , "). map {| s | s.to_i} как целые числа

31
ответ дан 23 November 2019 в 03:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: