Hızlı sıralama için kod yazdım. Benim sıralama yöntemi için bir hata alıyorum ama sorun nerede olduğunu görmüyorumRuby ile hızlı sıralama gerçekleştirme
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
hatası: sort': undefined method
+ @' nil için: NilClass (NoMethodError) herkes bu hata
Başlamak için, j + l'i 'j + = 1' ve' k '' yerine 'k - = 1' ile değiştirin. [neden ruby'nin ++ operatörü yok] (http://stackoverflow.com/questions/3660563/why-doesnt-ruby-support-i-or-i-increment-decrement-operators) –
Alt listelerinizden birinin, k 1 veya liste uzunluğu olduğunda olduğu gibi boş olduğundan şüphelenir. – Octopus
Lütfen satır numaraları ve backtrace dahil olmak üzere hatanın tam metnini verin. Bundan tek bildiğim, bir yere sıfır değere eklemeye çalıştığın. Ayrıca lütfen bir [mcve] sağlamaya çalışın. – Shelvacu