--select sort
function select_sort(t)
for i=1, #t - 1 do
local min = i
for j=i+1, #t do
if t[j] < t[min] then
min = j
end
end
if min ~= i then
t[min], t[i] = t[i], t[min]
end
end
end
tb = {77, 99, 2, 334, 22, 32, 9}
print("-------------before--------------")
print(table.concat(tb, " "))
print("-------------after---------------")
select_sort(tb)
print(table.concat(tb, " "))
table带有个sort函数,手册说明如下:
Sorts table elements in a given order, in-place, from table[1]
to table[n]
, where n
is the length of the table. If comp
is given, then it must be a function that receives two table elements, and returns true when the first is less than the second (so that not comp(a[i+1],a[i])
will be true after the sort). If comp
is not given, then the standard Lua operator <
is used instead.
The sort algorithm is not stable; that is, elements considered equal by the given order may have their relative positions changed by the sort.
因此你也可以这么写:
function comp(a, b)
return a < b
end
table.sort(tb, comp)
当然,通常你可以使用匿名的函数
table.sort(tb, function(a, b)
return a < b
end)