Update all new Tasks
This commit is contained in:
parent
00a190b0a6
commit
91df62d461
5697 changed files with 93386 additions and 804 deletions
18
Task/Quickselect-algorithm/Ruby/quickselect-algorithm.rb
Normal file
18
Task/Quickselect-algorithm/Ruby/quickselect-algorithm.rb
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
def quickselect(a, k)
|
||||
arr = a.dup # we will be modifying it
|
||||
loop do
|
||||
pivot = arr.delete_at(rand(arr.length))
|
||||
left, right = arr.partition { |x| x < pivot }
|
||||
if k == left.length
|
||||
return pivot
|
||||
elsif k < left.length
|
||||
arr = left
|
||||
else
|
||||
k = k - left.length - 1
|
||||
arr = right
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
v = [9, 8, 7, 6, 5, 0, 1, 2, 3, 4]
|
||||
p v.each_index.map { |i| quickselect(v, i) }
|
||||
Loading…
Add table
Add a link
Reference in a new issue