diff --git a/archive/r/ruby/selection-sort.rb b/archive/r/ruby/selection-sort.rb new file mode 100644 index 000000000..f0d3b2f3a --- /dev/null +++ b/archive/r/ruby/selection-sort.rb @@ -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]) \ No newline at end of file