Lua學習之演算法題(一)

2021-09-22 18:53:30 字數 1816 閱讀 7776

1、漢諾塔演算法

-- 漢諾塔演算法

-- n:移動圓盤的個數

-- from:源柱

-- to:目標柱

-- fuzhu:輔助柱

function changepage(n, from, to, fuzhu)

if(n == 1) then

print(string.format("移動圓盤從:%s 到 %s", from, to))

return

endchangepage(n - 1, from, fuzhu, to)

print(string.format("移動圓盤從:%s 到 %s", from, to))

changepage(n - 1, fuzhu, to, from)

endchangepage(5,'a', 'b', 'c')

2、判斷乙個陣列是否為順序(遞給求解)

-- tab:目標表

-- len:表的長度

function isarraysortedorder(tab, len)

if(len == 1) then return true end

if(tab[len] < tab[len - 1]) then return false end

return isarraysortedorder(tab, len - 1)

endtab =

print(isarraysortedorder(tab, #tab))

3、氣泡排序(改進的)

-- 氣泡排序

-- tab:目標表

-- len:表的長度

-- count:測試排序執行的次數

function bubblesort(tab, len)

local issort = true

local count = 0

for i = 1, len do

for j = 1, len - i do

count = count + 1

if(tab[j] > tab[j + 1])then

issort = false

local temp = tab[j]

tab[j] = tab[j + 1]

tab[j + 1] = temp

endend

if(issort) then

break

else

issort = true

endend

print(table.concat(tab, ','))

print(count)

end--tab =

tab =

bubblesort(tab, #tab)

4、選擇排序

-- 選擇排序

function selection(tab, len)

local min = 1;

local temp

for i = 1, len - 1 do

min = i

for j = i + 1, len do

if tab[min] > tab[j] then

min = j

temp = tab[i]

tab[i] = tab[j]

tab[j] = temp

endend

endprint(table.concat(tab, ','))

endtab =

selection(tab, #tab)

LUA學習之編譯

cd src make linux gcc o2 wall dlua compat all dlua use linux c o lua.o lua.c gcc o lua lua.o liblua.a lm wl,e ldl lreadline usr lib gcc x86 64 redhat ...

lua學習之迴圈

參考 目錄 while迴圈 for迴圈 泛型for迴圈 reapeat util 迴圈控制語句 while condition do statements end在condition為true的時候執行迴圈體。for var exp1,exp2,exp3 do 執行體 endvar從exp1變化到e...

lua 學習之編譯

lua 是解釋語言 但 lua 允許在執行源 前,先將源 編譯為一種中間形式 區別解釋語言的主要特徵並不在於是否能編譯它們 在於編譯器是否是語言執行時庫的一部分 是否有能力執行動態生成的 dofile函式是一種內建的操作,用於執行 lua 塊 dofile僅是做了loadfile的輔助工作 load...