def quick_sort(list) return [] if list.empty? parts = list.group_by { |n| n <=> list.first } less_parts = parts[-1] || [] first = parts[0] || [] greater_parts = parts[1] || [] quick_sort(less_parts) + first + quick_sort(greater_parts) end p quick_sort [13, 27, 25, 11, 88, 92]