使用者自定義排序功能的設計思路

2021-07-02 22:28:06 字數 538 閱讀 5591

需要做乙個使用者自定義排序的功能,本來並不覺得麻煩,但是做著做著發現,裡面的問題很值得好好思考一下。

使用者自定義排序的資料庫設計很簡單,無非是對需要排序的條加乙個排序字段,但麻煩之處主要在於這個欄位的更新過程。

如果用簡單的1、2、3、4作為排序字段,那麼把4移到1前面的情況下,原先的1~3都需要+1來為新的「1」騰出位置,這樣會帶來數倍於預期的計算量。

於是我希望找到一種方法來使得改變排序時候的計算量是常數,想來想去,找到乙個不太優雅的思路:利用自然數不可數的特點(我真tm機智)。

具體來說就是用浮點數儲存排序資料,當排序改變時,直接取該位置兩邊排序值的中間值,比如4需要排到第2位,那麼就把4直接賦值為1.5,這時候3又要排到第3位,那麼就把3設定為1.75,因為都是中值,資料也不算醜陋。

1、1.5、1.75、2

我們把他們重新組織成蒸熟,把他們之間的距離拉開,這樣就不會出現排序重複的問題了。

處理後可能會變成:

2、32、64、128

目前這個問題還遠不是我的系統瓶頸,所以上面說的雖然是種解決方案,然而並沒有什麼卵用。

ListView 控制項的自定義排序功能

在軟體開發中經常,使用listview進行自定義的排序,那麼如何能自定義一些類來進行,字串 整型 日期等型別進行排序呢?一 建立 listviewitem parer 類建立listviewitem parer類 下面自定義了兩個類都繼承自i parer,乙個用於字串排序,乙個用於整型排序 進行字串...

Mocoolka 使用者自定義字段設計

在系統實施期間,根據實際的要求可能對窗體的字段有增加。增加的字段分為兩種 一 為統計 查詢條件使用。這種字段需要增加的步驟如下 1 在資料表中增加 2 用開發管理 列模型定義中的同步功能 3 在開發管理 編輯頁面定義中增加 二 只是顯示使用,不使用合計等統計功能 針對這種增加二個管理螢幕 屬性和屬性...

自定義RPC框架實戰 一 設計思路

學習rpc原理,鍛鍊自己設計能力。服務註冊 服務發現 定時接收客戶端服務心跳 容錯處理 集群負載均衡 位址路由 服務監控 獲取服務 rpc 即remote procedure call,遠端過程呼叫 指的是對網路上另外乙個計算機上的,某段特定的函式 的呼叫。首先得寫乙個註冊中心服務,主要功能如下 1...