
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]
