Skip to content

Instantly share code, notes, and snippets.

@kvirani
Last active June 26, 2019 16:29
Show Gist options
  • Save kvirani/075b6acf74a5921c3e93 to your computer and use it in GitHub Desktop.
Save kvirani/075b6acf74a5921c3e93 to your computer and use it in GitHub Desktop.
Implementing Sorting Algorithms

Create a directory in your /vagrant folder (while ssh'd into your Vagrant VM). Within that directory, clone your fork of this repo, which contains one ruby file sort.rb.

Spend the time necessary to read and fully understand what the code in sort.rb is doing. Google or discuss as necessary. Have an expectation of what will be output when you first run the code, then use the ruby command to run the sort.rb file from the terminal.

Task: Currently, the built-in Array#sort method is being used (line 3) to implement the logic for the sort method. As an exercise, instead of leveraging this built-in method, implement your own sort logic such that the resulting output from this ruby script stays the same. See http://en.wikipedia.org/wiki/Sorting_algorithm for different sorting algorithms. At a minimum implement Bubble Sort and Merge Sort.

As an extension, benchmark the different implementations versus the built in array.sort. Read about Ruby's benchmark here

# Sort the array from lowest to highest
def sort(arr)
arr.sort
end
# Find the maximum
def maximum(arr)
sort(arr).last
end
def minimum(arr)
sort(arr).first
end
# expect it to return 42 below
result = maximum([2, 42, 22, 02])
puts "max of 2, 42, 22, 02 is: #{result}"
# expect it to return 2 below
result = minimum([2, 42, 22, 02])
puts "min of 2, 42, 22, 02 is: #{result}"
# expect it to return nil when empty array is passed in
result = maximum([])
puts "max on empty set is: #{result.inspect}"
result = minimum([])
puts "min on empty set is: #{result.inspect}"
result = maximum([-23, 0, -3])
puts "max of -23, 0, -3 is: #{result}"
result = maximum([6])
puts "max of just 6 is: #{result}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment