2012-12-13 66 views
0

这当前只是一种内涵,但它困扰着我的大脑。对一个没有计数器的列表进行排序

如果我有一个项目清单 - 在我心中这是一个HTML/JS实现,但是这只是因为我是一个视觉思想家;)

我想使用拖放排序这个列表中,目的是在我完成时存储新订单。有没有办法做到这一点,没有编号的项目,然后更新被删除的项目+每个单项跟随它的数量?这不是非常低效?

+1

所有这取决于你如何做存储部分我猜 – musefan

+0

'排序'你需要决定一个顺序的东西..你想按字母顺序排序或通过连续出版物等您的标准是什么? – SajjadHashmi

+0

排序将是一个手动程序,所以没有预定义的标准。 –

回答

3

就性能而言,改变元素的编号并不代表实际呈现过渡(当您拖动元素时),所以不,效率不高。

您可以使用doubly linked list以最小化更改集合顺序所需的操作量。

+0

链接列表绝对是我的第一个想法。好的解决方案 – wrhall

+0

这是一个很好的解决方案,有趣的阅读。 – Cerbrus

0

如果你在数字中留下空白,你可能会有效地做到这一点 - 例如,让第一个元素为10,第二个为20,第三个30等。然后,当你拖动第二个和第一个之后,把它称为15(或某物)。

而不是每次增加数字,你只需要做,如果你用尽了空间。最后,您可以通过最小数量来排列对象。

+0

听起来很痛苦。如果事实上,你可能不得不这样做更多的处理 – musefan

+0

我不确定OP计划使用什么样的机制,但它似乎是一个图书馆排序问题(http://en.wikipedia.org/wiki/Library_sort)。 – wrhall

0

我会推荐使用JavaScript框架来完成这项工作。

KnockoutJS应符合(从网站)你的需求:

淘汰赛是一个JavaScript库,可帮助您创建丰富的,反应迅速显示和编辑用户界面,用干净的底层数据模型。任何时候您都有动态更新的UI部分(例如,根据用户的动作或外部数据源更改而更改),KO可以帮助您更简单且可维护地实施它。

0

这里不包括任何代码,因为这是一个概念性问题。
无论如何,您必须为列表中的每个元素都有一个数字,因为他们之间必须有一个Total Ordering以表示为列表。
如果您不希望列表中元素的数量很大,则Bubble Sort应该适合您。

相关问题