如何设计适合自定义排序的数据结构?

时间:2018-08-22 00:53:43

标签: java database

表中有一些项目,希望用户可以自己定义这些项目的种类。 因此,我在表中添加了\n字段,表可能是

str.split()

然后,我使用以下代码显示按使用定义的项目排序。

import json
json.loads('[[0,1,0],[0,0,0]]')

结果将是

sortValue (Int )

我发现很难通过数据结构来更改这些项目的顺序。

例如:

我希望记录name sortValue Jack 3 Paul 1 April 30 Alic 25 位于第二位置。我必须将记录更新为Select name, sortValue from myTable order by sortValue

结果将是

name   sortValue
Paul       1
Jack       3
Alic       25
April      30

如果下次我需要记录(name=Alic, sortValue=25)在第二个位置时,我发现该记录没有sortValue!

1 个答案:

答案 0 :(得分:2)

您可以在sortValue列中使用浮点类型,因此您将始终有一个空格可以在其他两个之间插入新值。

# if record is between others 
sortValue = (prevSortValue + nextSortValue)/2

# if record is last
sortValue = prevSortValue + 1

理论上,当您用完浮点精度时,可能会遇到与整数相同的问题。但实际上,这很大程度上取决于您在其他记录之间插入记录的频率。尤其是当您在同一条记录附近有很多插入内容时。

更新现有记录以将新记录放置在正确的位置似乎效率很低,因为update的操作比insert昂贵得多,并且需要锁定记录,而您不必修改。< / p>