最近在学习Lua和xLua的相关知识, 所以想用Lua来写一个快速排序来熟悉一下Lua的语法.
-- Lua实现快速排序
function SortUnit(nums, left, right)
-- 确定中心点 left
local pivot = nums[left]
while left < right do
while nums[right] >= pivot and right > left do
right = right - 1
end
nums[left] = nums[right]
while nums[left] <= pivot and right > left do
left = left + 1
end
nums[right] = nums[left]
end
nums[left] = pivot
return left
end
function QuickSort(nums, left, right)
if (left >= right) then
return
end
local pivotIndex = SortUnit(nums, left, right)
QuickSort(nums, left, pivotIndex - 1)
QuickSort(nums, pivotIndex + 1, right)
end
-- 测试
nums = {8, 1, 5, 2, 9, 7, 3}
QuickSort(nums, 1, #nums)
for i = 1, #nums do
print(nums[i])
end