クイックソートのコードを記述しました。私は私のソート方法のエラーを取得していますが、問題がどこにあるか私には表示されませんRubyでのクイックソートの実装
def sort (numbers, first, last)
if first >= last
return
end
if first < last
pivot = first
j = first
k = last
while (j < k)
if(numbers[j] >= numbers[pivot])
j +=1
if(numbers[k] < numbers[pivot])
k -=1
if(j <= k)
temp = numbers[j]
numbers[j] = numbers[k]
numbers[k] = temp
end
end
end
end
puts "end loop"
temp = numbers[pivot]
numbers[pivot]= numbers[k]
numbers[k] = temp
sort(numbers,first,k-1)
sort(numbers,k+1,last)
end
end
a = [89, 23, 12, 67, 45, 78, 24, 56, 87, 73, 37]
first = 0
for i in 0...a.length
puts a[i]
end
last = a.length - 1
puts "Array Count is #{last}"
sort(a, 0, last)
for i in 0...a.length
puts a[i]
end
エラー:sort': undefined method
+ @」nilのために:NilClass(NoMethodError) は、誰もがこのエラーが
開始するには、 'j ++'を 'j + = 1'と' k - 'を' k- = 1'に置き換えてください。 [rubyに++演算子がない理由](http://stackoverflow.com/questions/3660563/why-doesnt-ruby-support-i-or-i-increment-decrement-operators) –
私はkが1またはリストの長さのときに起こるように、あなたのサブリストの1つが空であると思われます。 – Octopus
行番号とバックトレースを含むエラーの全文を入力してください。私が知っているのは、あなたがどこにもない値に追加しようとしているところです。また、[mcve]を提供してください。 – Shelvacu