获取未定义的方法`<' for nil:快速排序算法

时间:2015-09-07 12:32:21

标签: ruby algorithm quicksort

这是我的快速排序算法代码:

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>'

帮我查一下我做错了什么?请解释我在实现算法时出现的错误

0 个答案:

没有答案