lua 希尔排序

require 'os'
local MAXNUM = 100000
local tab = {}
for i=1,MAXNUM do
	local tmpnum = math.random(MAXNUM)
	table.insert(tab, tmpnum)
end

local increasement = MAXNUM
local k=0
local i=0
local j = 0
while(increasement > 3) do
	increasement = math.floor(increasement/3)
	--print(">>>>>>>>22222",increasement)
	for i=1, increasement do
		for j=i+increasement, MAXNUM, increasement do
			if tab[j]< tab[j-increasement] then
				local tmp = tab[j]
				k=j-increasement
				while(k>0 and tmp < tab[k]) do
					tab[k+increasement] = tab[k]
					k=k-increasement
				end
				tab[k+increasement] = tmp
			end
		end
	end
end
print(">>>>>>>>>>>>>>>>>")
for k,v in ipairs(tab) do
	print("......",v)
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值