Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions archive/r/ruby/selection-sort.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
def selection_sort(numbers)
# Handle missing or invalid input
if numbers.nil? || numbers.strip.empty?
return 'Usage: please provide a list of at least two integers to sort in the format "1, 2, 3, 4, 5"'
end

# Split into an array and convert to integers
unsorted_elements = numbers.split(',').map(&:strip).map(&:to_i)

# Validate array has at least 2 elements
if unsorted_elements.length < 2
return 'Usage: please provide a list of at least two integers to sort in the format "1, 2, 3, 4, 5"'
end

# Make an array to store the sorted elements
sorted_elements = []

# Iterate until the list of unsorted elements is emptu
until unsorted_elements.empty?
# Store the minimal value in a variable
min_element = unsorted_elements.min

# Add the element at the end of the sorted elements array
sorted_elements.push(min_element)

# Delete the minimal value from the unsorted elements array
unsorted_elements.delete_at(unsorted_elements.index(min_element))
end

# Return as comma-separated string
sorted_elements.join(', ')
end

puts selection_sort(ARGV[0])