天天看点

lua一些排序,后续继续添加冒泡排序简单选择排序

目录

  • 冒泡排序
  • 简单选择排序

冒泡排序

--- 打印table
function printTB(tb)
	print("打印tb", table.concat( tb, ", "))
end
--- 冒泡排序
local tbArray = {3,5,7,34,1,78,77,23,-10,33,73,2345,45}

function buddle_sort(tbArray)
	local i,j,tmp
	for i=1,#tbArray-1,1 do
		for j=1,#tbArray-i,1 do -- tbArray-i的原因是, j+1位的值已经是最终结果,不需要再变动
			print("+++j 当前比较的数="..tbArray[j].." "..tbArray[j+1])
			if tbArray[j] < tbArray[j+1] then
				print("交换".. tbArray[j].."	".. tbArray[j+1])
				tmp = tbArray[j+1]
				tbArray[j+1] = tbArray[j]
				tbArray[j] = tmp
			end
		end
		printTB(tbArray)
	end
end

buddle_sort(tbArray)
           

简单选择排序

--- 打印table
function printTB(tb)
	print("打印tb", table.concat( tb, ", "))
end
--- 简单选择排序
local tbArray = {3,5,7,34,1,78,77,23,-10,33,73,2345,45}

function select_sort( tb )
	local i,j,max,tmp
	for i = 1 , #tb-1, 1 do
		max = i
		for j = i+1, #tb, 1 do
			if tb[j] > tb[max] then
				-- 找出最大的一个值所在的下标
				max = j
			end
		end

		if max ~= i then
			tmp = tbArray[max]
			tbArray[max] = tbArray[i]
			tbArray[i] = tmp
		end

		printTB(tb)
	end
end

select_sort(tbArray)