Lua Sort 自定義排序的注意事項

2021-08-20 20:46:51 字數 411 閱讀 7593

要求傳入兩個相同的數時要返回false, 換句話說,下面的函式用<=做比較,是錯誤的。

local compare_func = function(v1, v2)  

return v1 <= v2   -- error 

end 

測試local t =

table.sort(t,compare_func)

for k, v in ipairs(t) do

print(v)

end 

輸出:1,2,4,3

為什麼了?

因為內部使用sheel sort演算法,具體細節不表。 在上面的例子中,演算法執行中會呼叫compare_func (3,3),返回true,不滿足相同元素返回false的要求。演算法執行錯誤。

比較函式寫<,不要寫<=

DataGridView自定義排序

net自帶datagridview排序貌似最終都是用datagridview.sort 發現當是用排序後,datagridview將把排序前的行樣式等重置,仔細測試後覺得貌似是排序時datagridview重新繫結了資料來源,具體不得而知.實在沒有辦法破解,我也不想重新寫比較來排序,用了最土的辦法,...

QTableWidget 自定義排序

qtablewidget功能強大,可以在每個格仔裡新增自己的wiget部件。如果想對這些自己新增的widget進行排序有兩種方法。一種是直接設定每個格仔對應的qtablewidgetitem的值,因為qtablewidget預設是據qtablewidgetitem來排序,呼叫的比較函式是 bool ...

python list 自定義排序

看到的乙個知識點,稍加記錄 a 希望將上述的list排序,按照每條記錄中的 score 排序。如果 score 欄位的值相等,則按照 first 的值排序。如果 first 依舊相等,則按照 second 排序。如果 second 相等,則按照 third 欄位的值來排序。a.sort.doc l....