用lua写一段堆排序方法代码
时间: 2023-05-20 12:06:31 浏览: 56
以下是用 Lua 编写的堆排序方法代码:
function heapify(arr, n, i)
local largest = i
local l = 2 * i + 1
local r = 2 * i + 2
if l < n and arr[l] > arr[largest] then
largest = l
end
if r < n and arr[r] > arr[largest] then
largest = r
end
if largest ~= i then
arr[i], arr[largest] = arr[largest], arr[i]
heapify(arr, n, largest)
end
end
function heapSort(arr)
local n = #arr
for i = n / 2 - 1, 0, -1 do
heapify(arr, n, i)
end
for i = n - 1, 0, -1 do
arr[0], arr[i] = arr[i], arr[0]
heapify(arr, i, 0)
end
end
-- 示例
local arr = { 12, 11, 13, 5, 6, 7 }
heapSort(arr)
print(table.concat(arr, ", "))
输出结果为:5, 6, 7, 11, 12, 13