Lua的排序演算法 快速排序

2021-10-01 01:59:39 字數 1021 閱讀 7099

a = 

--快速排序(以陣列最左邊的值為基準,比它小的放左邊,比它大的放右邊,然後再對左右兩邊的陣列進行同樣的操作,直到細分排列完成)

local function kuaisupaixu(arr, startindex, endindex)

if startindex >= endindex then

return

endlocal lowindex = startindex

local highindex = endindex

local key = arr[lowindex]

while(lowindex < highindex) do

while(arr[highindex] >= key and highindex > lowindex) do --找到乙個小於key的值放在左邊

highindex = highindex - 1

endarr[lowindex] = arr[highindex]

while(arr[lowindex] <= key and highindex > lowindex) do --找到乙個大於key的放在右邊

lowindex = lowindex + 1

endarr[highindex] = arr[lowindex]

arr[lowindex] = key --把key放在游標停止處

end--對陣列整體做一次排序,得到中間索引,切分成左右兩個陣列,然後再遞迴

kuaisupaixu(arr, startindex, lowindex - 1)

kuaisupaixu(arr, lowindex + 1, endindex)

endlocal function printtab(t)

for k, v in pairs(t) do

print(v)

endendprint("kuaisupaixu")

kuaisupaixu(a, 1, #a)

printtab(a)

Lua 快速排序

開始學習lua,打算先用lua來寫一下排序演算法,這是個開始。希望能堅持下去。先是快排 如下 就不解釋了邏輯和c 一樣只是語法格式問題 myarr function quicksort arr,left,right index arr left l left r right while l r do...

常用排序演算法之快速排序c及lua實現

快速排序使用分治法 divide and conquer 策略來把乙個序列 list 分為兩個子串行 sub lists 步驟為 從數列中挑出乙個元素,稱為 基準 pivot 重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面 相同的數可以到任一邊 在這個分割槽退出...

排序演算法 快速排序演算法

網際網路的大型公司還在火熱招聘中,參與了一次又一次的筆試,都不通過,我還是太菜!作為程式設計人員,需要邁過去 資料結構與演算法 這個坎,畢竟,筆試不會真的很虧,加油吧,少些水,多點實操。一 快速排序演算法思想 從一組資料中找出乙個基準值,一般是選擇中間值作為基準值,然後從左到右將值與基準值進行比較,...