这是我的快速排序算法代码:
def partition(quick, l, h)
x = quick[h]
i = l-1
j = 0
(0..h-1).each do |j|
if quick[j] < x
i = i+1
quick[i], quick[j] = quick[j], quick[i]
end
end
quick[i+1], quick[h] = quick[h], quick[i+1]
return i+1
end
def quickSort(quick, l, h)
if l < h
p = partition(quick, l, h)
quickSort(quick, l, p-1)
quickSort(quick, p+1, h)
end
end
quick = Array[10, 7, 8, 9, 1, 5]
n = quick.size
quickSort(quick, 0, n-1)
puts "Sorted Array"
def printArray(quick)
quick.each do |i|
puts quick[i]
end
end
printArray(quick)
运行程序后出现以下错误:
quick.rb:9:in `block in partition': undefined method `<' for nil:NilClass (NoMethodError)
from quick.rb:8:in `each'
from quick.rb:8:in `partition'
from quick.rb:24:in `quickSort'
from quick.rb:25:in `quickSort'
from quick.rb:26:in `quickSort'
from quick.rb:34:in `<main>'
帮我查一下我做错了什么?请解释我在实现算法时出现的错误