</pre><pre name="code" class="plain"><pre name="code" class="plain">--插入排序
--@param list 数据
--@param compareFunc 比较函数
function sort.insertSort( list, compareFunc )
for i = 1, #list do
local tem = list[i]
local j = i
while j > 1 and compareFunc(tem, list[j - 1]) do
list[j] = list[j - 1]
j = j - 1
end
list[j] = tem
end
end
--谢尔排序 ,选择排序升级版(分组插入排序)
--@param list 数据
--@param compareFunc 比较函数
function sort.shellSort( list, compareFunc )
local grop = math.floor(#list / 2)
while grop > 0 do
for i = grop + 1, #list do
local tem = list[i]
local j = i
while j > grop and compareFunc(tem, list[j - grop]) do
list[j] = list[j - grop]
j = j - grop
end
list[j] = tem
end
grop = math.floor(grop / 2)
end
end
print("------------------------------insert sort----------------------------------")
local list = {1,4,25,764, 34, 645, 67, 6354, 34,}
dump(list)
sort.insertSort(list, function ( a, b )
return a < b
end)
dump(list)
print("------------------------------shell sort----------------------------------")
list = {1,4,25,764, 34, 645, 67, 6354, 34,}
dump(list)
sort.shellSort(list, function ( a, b )
return a < b
end)
dump(list)