diff --git a/array_extension.rb b/array_extension.rb new file mode 100644 index 0000000..8b60952 --- /dev/null +++ b/array_extension.rb @@ -0,0 +1,19 @@ +require_relative "bubblesort" + +class Array + def bubble_sort! + BubbleSort.sort!(self) + end + + def bubble_sort + BubbleSort.sort(self) + end +end + + +a = [4, 3, 5, 0, 1].bubble_sort! + +a = [4, 3, 5, 0, 1] +a.bubble_sort! + +p a diff --git a/bubblesort.rb b/bubblesort.rb new file mode 100644 index 0000000..477141e --- /dev/null +++ b/bubblesort.rb @@ -0,0 +1,39 @@ +class BubbleSort + def self.sort!(sequence) + swaps = 0 + iterations = 0 + i = 0 + while i < sequence.size do + iterations += 1 + if sequence[i+1].nil? + break + elsif sequence[i] > sequence[i+1] + temp_var = sequence[i] + sequence[i] = sequence[i+1] + sequence[i+1] = temp_var + if i > 0 + i -= 1 + else + i = 0 + end + swaps += 1 + else + i += 1 + end + end + end + + def self.sort(sequence) + sequence_copy = sequence.dup + self.sort!(sequence_copy) + return sequence_copy + end +end + +# a = [4, 3, 5, 0, 1] +# BubbleSort.sort(a) +# puts "Final result: #{a}" + +# puts "Final result: #{sequence}" +# puts "Swaps: #{swaps}" +# puts "Iterations: #{iterations}"