存储任意排序顺序的最有效方法?

Posted

技术标签:

【中文标题】存储任意排序顺序的最有效方法?【英文标题】:Most efficient way to store arbitrary sort order? 【发布时间】:2015-07-11 22:36:12 【问题描述】:

我目前正在开发一个 android 应用程序,用户可以通过拖放按他们想要的任何顺序排列他们的列表。因此,我必须将排序顺序存储在列中的变量中。我正在考虑给每一行一个数字,如 100000、200000、300000 等,如果用户在 100000 和 200000 之间移动一个项目,那么它的排序数将成为其邻居的平均值,即 150000。这样,我只需要更新如果我执行正常的 i+1 排序值,则单行的排序号而不是表中的每一行。

什么是最有效的?大数字使用更多资源还是需要更长的时间进行排序?我只希望

任何帮助将不胜感激。

【问题讨论】:

我对此知之甚少,无法写出完整的答案,但我猜您可能想在您的数据库中模拟一个链表。让列表项保存上一个和下一个列表项的 id 值。 en.m.wikipedia.org/wiki/Doubly_linked_list 数据可能会在多个用户/设备之间同步,所以 id 而不是依赖其他可能存在于本地但实际上已经在服务器上删除的对象。 在 100 行中,您所做的任何事情都不会产生任何明显的影响。 What is the most efficient way to store a sort-order on a group of records in a database?的可能重复 ***.com/questions/547022/how-do-i-store-orders 【参考方案1】:

我最终只是使用我最初的方法给每一行一个数字,如 100000、200000、300000 等,如果用户在 100000 和 200000 之间移动一个项目,那么它的排序数将成为其邻居的平均值,即 150000。由于我拥有的行数相对较少〜50,我选择了这种可能不是有效但最简单的方法。

【讨论】:

我为您提供了一个很好的答案,但每个人都激怒了我,因为它不是“链接列表”。这个网站上的一群技术专家,总是被吸引住 将第二个列表项移到第一位。重复 18 次,你就会遇到麻烦。 sqlfiddle

以上是关于存储任意排序顺序的最有效方法?的主要内容,如果未能解决你的问题,请参考以下文章

以用户指定的顺序存储数据

mongodb - 按顺序计算缺失索引的最有效方法

确保Java中顺序命令的最有效方法

动图演示堆排序

根据行 ID 以任意顺序重新排序表行

使用 Morton 顺序进行最近邻搜索的好处?