zoukankan      html  css  js  c++  java
  • 类别进行排序的一个简单分析

    拖拉排序的算法

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



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

  • 相关阅读:
    新概念4-38
    新概念4-37
    新概念4-36
    新概念4-35
    国史通鉴-03 天下为私 04
    新概念4-34
    西门子 框架断路器 及其他中低压配电设备资料查询
    OPC UA 的本质
    经典Scout添加等时同步设备
    同步报故障解同步启动
  • 原文地址:https://www.cnblogs.com/lovebanyi/p/2055725.html
Copyright © 2011-2022 走看看