Quicksort Hubraum Ruby

[code=ruby] def quicksort(a, p, r) if p < r q = partition(a, p, r) quicksort(a, p, q) quicksort(a, q + 1, r) end end def partition(a, p, r) puts puts “a: #{a.inspect}, p: #{p}, r: #{r}” x = a[r] i = p - 1 for j in p..r do if a[j] <= x i += 1 temp = a[i] a[i] = a[j] a[j] = temp end end puts “After partition:” puts a.

[code=ruby] def quicksort(a, p, r) if p < r q = partition(a, p, r) quicksort(a, p, q) quicksort(a, q + 1, r) end end

def partition(a, p, r) puts puts “a: #{a.inspect}, p: #{p}, r: #{r}” x = a[r] i = p - 1

for j in p..r do if a[j] <= x i += 1 temp = a[i] a[i] = a[j] a[j] = temp end end

puts “After partition:” puts a.inspect

if i < r i else i - 1 end end

a = [14, 13, 12, 11] puts “start list:” puts a.inspect

quicksort(a, 0, a.size - 1) [/code]

Output: [code=plain] start list: [14, 13, 12, 11]

a: [14, 13, 12, 11], p: 0, r: 3 After partition: [11, 13, 12, 14]

a: [11, 13, 12, 14], p: 1, r: 3 After partition: [11, 13, 12, 14]

a: [11, 13, 12, 14], p: 1, r: 2 After partition: [11, 12, 13, 14] [/code]