天天看點

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)