84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
有一个物品列表,默认按照发布的时间 自增 ID 排序例如
1 : 物品12 : 物品23 : 物品3...
如果我想移动
922 : 物品922
到第 100个位置.
那么这个排序,除了循环后面的内容吧位置全部+1外,有什么好方法吗?
闭关修行中......
循环内容补加一应该是线性表顺序存储结构的特点,他的缺点恰恰就是插入和删除可以采用链表的方式。链表的实现原理是列表中各项在内存中随意存储,但是每一项中都存有下一项内存的指针。这样可以通过第一个元素的指针找到第二个元素,然后找到第三个。这样如果要增删的话只要改变相应几项的指针地址就可以了。比如要把6插到3的位置。那么只要把5的下一项指针改成7,6就被删除了,然后把2的下一项指针改成6,6的下一项指针改成3,整个就实现了移动操作,大大降低时间复杂度。当然上面是理论。----实践分割线-------对应js可以使用splice
SQL 就一句话的事情,也不是很麻烦吧
update tablenameset order = order + 1where order > 100;
如果是在程序里,用链表也是很容易解决的。JS 的 Array 貌似是链表实现的,所以可以直接用 splice 来实现插入。
循环内容补加一应该是线性表顺序存储结构的特点,他的缺点恰恰就是插入和删除
可以采用链表的方式。
链表的实现原理是列表中各项在内存中随意存储,但是每一项中都存有下一项内存的指针。这样可以通过第一个元素的指针找到第二个元素,然后找到第三个。这样如果要增删的话只要改变相应几项的指针地址就可以了。
比如要把6插到3的位置。那么只要把5的下一项指针改成7,6就被删除了,然后把2的下一项指针改成6,6的下一项指针改成3,整个就实现了移动操作,大大降低时间复杂度。
当然上面是理论。
----实践分割线-------
对应js可以使用splice
SQL 就一句话的事情,也不是很麻烦吧
如果是在程序里,用链表也是很容易解决的。JS 的 Array 貌似是链表实现的,所以可以直接用 splice 来实现插入。