步兵 lua 簡潔的排序

2021-07-24 08:24:58 字數 1936 閱讀 4358

好久沒更新了,怒刷一下存在感。

前幾天,做一些選項排序相關的功能,遇到乙個小問題,然後把解決方法分享一下。

其實就是一些簡單的排序,舉個例子:

比如裝備,一會要按照 品質-評分-等級 排序,一會又要按照 評分-品質-等級 排序,

再複雜點的比如 拍賣行 售價之類的,倒騰來倒騰去,寫了幾個就給我寫煩了。

就這麼幾個key來回折騰,煩不煩喲~於是我就關掉專案去寫demo了。

目標:乙個table,乙個keylist 搞定排序功能。

(ps:前邊加下劃線,可以避免智慧型提示過多的困擾

pss:前提是,你不是私有下劃線流)

local

function

_sortnextkey_(a,b,list)

ifa == b then

return

false

end if list.idx == nil then

list.idx = 0

end list.idx = list.idx + 1

local key = list[list.idx]

if key then

ifstring.find(key, "%.") then

local tmpa = a

local tmpb = b

for tmpkey in

string.gmatch(key, "[^%.]+") do

tmpa = tmpa[tmpkey]

tmpb = tmpb[tmpkey]

if tmpa == nil then list.idx = 0

return

false

end if tmpb == nil then list.idx = 0

return

true

end end

if tmpa == tmpb then

return

_sortnextkey_(a,b,list)

else

list.idx = 0

return tmpa > tmpb

endelse

ifa[key] == nil then list.idx = 0

return

false

end if b[key] == nil then list.idx = 0

return

true

end if

a[key] == b[key] then

return

_sortnextkey_(a,b,list)

else

list.idx = 0

return

a[key] > b[key]

endend

else

list.idx = 0

return

false

endend

function

table.sortbykey(list, sortkeylist)

table.sort(list, function (a,b)

return

_sortnextkey_(a,b,sortkeylist)

end)

end

(ps:指令碼用的越多越感覺c++不會寫了,難道是被慣壞了?)

也算是乙個很實用的功能=。= 雖然不難,可能大家也早就寫過此類功能,

不過還是希望給一部分人提供一些思路,讓我們一起來書寫簡單,而又明了的**吧。

see again~

之前 真愛無價,歡迎打賞~

快速排序的簡潔寫法

個人總結的兩種寫法,比較傾向於partition1,乙個邊界畢竟比兩個邊界好控制。此處 基於c 其實也就是用了個vector而已,隨便改改其他語言都可以。好多寫法都可以滿足普通情況,但不滿足特殊用例測試 1,1,1,3這種。共享。include stdafx.h include iostream i...

簡潔 js排序演算法

演算法基礎 展平陣列 使用.只能展平兩層 遞迴演算法 console.log flatten arr 函式節流演算法 距離上次執行超過60毫秒,才能執行 思路 執行throttle後 lock就是一把鎖,只有當lock為false時才執行func,這把鎖需要throttle距離上次執行相隔60毫秒才...

最簡潔的堆排序實現

public class sort heapsort arr for int i 0 i arr.length i public static void heapdown int array,int parent,int length array parent temp public static ...