拖拉排序的算法

我们做一些系统的时候需要会需要让用户对某个 产品和 类别进行排序。

类别进行排序的一个简单分析

这时候我们就需要把哪个实体加一个叫做DisplayOrder的属性了

上升和下降的话只要求 把两个DisplayOrder对换一下就行了。

但是拖拉的话是不一样,就不能是简单的交换了而是需要将 DisplayOrder插入到前面

例如我们有
Name        DisplayOrder

A             1
B             2
C             3
D             4
E             5
F             6
G             7

我们要将G拉到C前,我们就必须把 G的DisplayOrder设成C

然后把 C的设成D的,把D的设成E的,E的设成F的 F的设成G的。
但是这样的效率是比较差的。特别是在sql当中如果这样写的话可能会比较麻烦的。

 

因为DisplayOrder至少都是相差为1我们可以用一个更简单的方式来实现它

就是把 C和它后面的所有DisplayOrder全部+1但是这样的算法效率似乎还不是最好的。
因为如果是一个比较远距离的拖动我们就得更改好多项了。

 

一个更好的方式是 DisplayOrder 相差的值不是为1。这样就可以在某些程度下做到当把G的DisplayOrder设成c的。 而C+1不会跟D重复。从而降低更新。

 

 

相关文章:

  • 2021-09-06
  • 2022-03-08
  • 2022-12-23
  • 2022-12-23
  • 2021-12-14
  • 2021-09-17
  • 2021-07-11
  • 2021-06-23
猜你喜欢
  • 2021-07-14
  • 2021-11-19
  • 2022-12-23
  • 2022-12-23
  • 2021-07-13
  • 2021-10-31
  • 2021-08-26
相关资源
相似解决方案