Advertisement
Guest User

Untitled

a guest
Aug 18th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.26 KB | None | 0 0
  1. # Runtime: 1132 ms, faster than 6.25% of Ruby online submissions for Sort Array By Parity.
  2. # Memory Usage: 9.9 MB, less than 100.00% of Ruby online submissions for Sort Array By Parity.
  3. def sort_array_by_parity(a)
  4.   (0...a.size).each do |i|
  5.     next if a[i] % 2 != 0
  6.     key = a[i]
  7.     while i > 0 && a[i-1] % 2 != 0 do
  8.       a[i] = a[i-1]
  9.       i -= 1
  10.     end
  11.     a[i] = key
  12.   end
  13.   a
  14. end
  15.  
  16.  
  17. # Runtime: 84 ms, faster than 6.25% of Ruby online submissions for Sort Array By Parity.
  18. # Memory Usage: 10 MB, less than 100.00% of Ruby online submissions for Sort Array By Parity.
  19. def sort_array_by_parity(a)
  20.   return a if a.size < 2
  21.   middle = a.size / 2
  22.   left = sort_array_by_parity(a[0...middle])
  23.   right = sort_array_by_parity(a[middle..-1])
  24.   merge(left, right)
  25. end
  26.  
  27. def merge(left, right)
  28.   res = []
  29.   res.push(left[0].even? ? left.shift : right.shift) while !left.empty? && !right.empty?
  30.   res.concat(left).concat(right)
  31. end
  32.  
  33. # Runtime: 44 ms, faster than 92.19% of Ruby online submissions for Sort Array By Parity.
  34. # Memory Usage: 10.4 MB, less than 75.00% of Ruby online submissions for Sort Array By Parity.
  35.  
  36. def sort_array_by_parity(a)
  37.   odds, evens = [], []
  38.   a.each {|num| num.odd? ? odds << num : evens << num }
  39.   evens.concat(odds)
  40. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement