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 重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面 相同的數可以到任一邊 在這個分割槽退出...
排序演算法 快速排序演算法
網際網路的大型公司還在火熱招聘中,參與了一次又一次的筆試,都不通過,我還是太菜!作為程式設計人員,需要邁過去 資料結構與演算法 這個坎,畢竟,筆試不會真的很虧,加油吧,少些水,多點實操。一 快速排序演算法思想 從一組資料中找出乙個基準值,一般是選擇中間值作為基準值,然後從左到右將值與基準值進行比較,...