Я человек, который недавно изучал Lua.Я пишу QuickSort в Lua.Я перевел код быстрой сортировки, написанный на языке Go, на Lua, и этот код приведен ниже.Функция Table.slice определяет функцию, используемую при выполнении рекурсивных вызовов в QuickSort.
function table.slice(tbl, first, last, step)
local sliced = {}
for i = first , last , step do
sliced[#sliced+1] = tbl[i]
end
return sliced
end
function quickSort(array)
if #array < 2 then
return array
end
local left = 1
local right = #array
local pivot = math.random( 1, #array )
array[pivot], array[right] = array[right], array[pivot]
for i = 1, #array do
if array[i] > array[right] then
array[left], array[i] = array[i], array[left]
left = left + 1
end
end
array[left], array[right] = array[right], array[left]
a = table.slice(array,1,left-1,1)
b = table.slice(array,left+1,#array,1)
quickSort(a)
quickSort(b)
return array
end
Сначала я думал, что допустил ошибку в индексе таблицы Lua, начиная с 1, но я не мог сказать, где я был не прав.Не могли бы вы сказать мне, где я был не прав?Спасибо.