首頁  >  問答  >  主體

对于移动位置排序有什么好的办法吗?

有一个物品列表,默认按照发布的时间 自增 ID 排序例如

1 : 物品1
2 : 物品2
3 : 物品3
...

如果我想移动

922 : 物品922

到第 100个位置.

那么这个排序,除了循环后面的内容吧位置全部+1外,有什么好方法吗?


阿神阿神2922 天前927

全部回覆(2)我來回復

  • 学习ing

    学习ing2016-11-09 16:58:37

    循环内容补加一应该是线性表顺序存储结构的特点,他的缺点恰恰就是插入和删除
    可以采用链表的方式。
    链表的实现原理是列表中各项在内存中随意存储,但是每一项中都存有下一项内存的指针。这样可以通过第一个元素的指针找到第二个元素,然后找到第三个。这样如果要增删的话只要改变相应几项的指针地址就可以了。
    比如要把6插到3的位置。那么只要把5的下一项指针改成7,6就被删除了,然后把2的下一项指针改成6,6的下一项指针改成3,整个就实现了移动操作,大大降低时间复杂度。
    当然上面是理论。
    ----实践分割线-------
    对应js可以使用splice

    回覆
    0
  • 汪汪

    汪汪2016-11-09 16:58:16

    SQL 就一句话的事情,也不是很麻烦吧

    update  tablenameset     order = order + 1where   order > 100;

    如果是在程序里,用链表也是很容易解决的。JS 的 Array 貌似是链表实现的,所以可以直接用 splice 来实现插入。


    回覆
    0
  • 取消回覆