Sort Numbers
Sort a list of numbers using different algorithms.
Compare different sorting algorithms on sample data.
class SortingAlgorithms
def self.sort(algorithm:, dataset:)
arr = eval(dataset)
result = case algorithm
when "bubble_sort" then bubble_sort(arr.dup)
when "insertion_sort" then insertion_sort(arr.dup)
when "selection_sort" then selection_sort(arr.dup)
else raise ArgumentError, "Unknown algorithm: #{algorithm}"
end
"#{algorithm}: #{result.inspect}"
end
def self.bubble_sort(arr)
n = arr.length
(n - 1).times do
(n - 1).times do |j|
arr[j], arr[j + 1] = arr[j + 1], arr[j] if arr[j] > arr[j + 1]
end
end
arr
end
def self.insertion_sort(arr)
(1...arr.length).each do |i|
key = arr[i]
j = i - 1
while j >= 0 && arr[j] > key
arr[j + 1] = arr[j]
j -= 1
end
arr[j + 1] = key
end
arr
end
def self.selection_sort(arr)
(0...arr.length - 1).each do |i|
min_idx = i
(i + 1...arr.length).each do |j|
min_idx = j if arr[j] < arr[min_idx]
end
arr[i], arr[min_idx] = arr[min_idx], arr[i]
end
arr
end
end
Sort a list of numbers using different algorithms.