采用分治法编程实现合并排序算法,将下列数据从下到大排序。
时间: 2023-05-19 22:01:16 浏览: 65
当然可以,以下是合并排序算法的 Lua 代码:
function merge_sort(arr)
if #arr <= 1 then
return arr
end
local mid = math.floor(#arr / 2)
local left = {}
local right = {}
for i = 1, mid do
table.insert(left, arr[i])
end
for i = mid + 1, #arr do
table.insert(right, arr[i])
end
left = merge_sort(left)
right = merge_sort(right)
return merge(left, right)
end
function merge(left, right)
local result = {}
while #left > 0 and #right > 0 do
if left[1] <= right[1] then
table.insert(result, left[1])
table.remove(left, 1)
else
table.insert(result, right[1])
table.remove(right, 1)
end
end
while #left > 0 do
table.insert(result, left[1])
table.remove(left, 1)
end
while #right > 0 do
table.insert(result, right[1])
table.remove(right, 1)
end
return result
end
-- 测试代码
local arr = {5, 2, 8, 3, 1, 6, 9, 7, 4}
arr = merge_sort(arr)
for i = 1, #arr do
print(arr[i])
end
输出结果为:
1
2
3
4
5
6
7
8
9