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

拖拉排序的算法

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



这时候我们就需要把哪个实体加一个叫做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重复。从而降低更新。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值