1

假设我们按记录中的数字对一些记录进行排序:

Name  Number_of_Language_Known
John  3
Mary  2
Peter 3
Mike  1
...

如果我们也不是按 排序Name,那么 John 和 Peter 的顺序就不能保证,但如果记录从未改变,它不应该是随机的吗?我认为在大多数环境中应该是正确的(也就是说,没有其他任何变化,并且排序进行了两次)。

也就是说,如果我们对它进行一次排序,它不会是 Peter 在 John 之前,第二次是 John 在 Peter 之前。

这是因为在 Ruby on Rails 环境中,如果从 DB 中获取记录,然后通过 Ruby 函数进行排序,并作为原始页面内容打印,则顺序是一种方式,但如果随后通过 AJAX 请求数据,则对于该数字字段中具有相同数字的记录,排序后的数组元素可以具有不同的顺序,这看起来很奇怪。

更新:如果数据来自数据库,那么在获取记录时数据库可能会有不可预测的顺序。但是,如果记录首先按主 ID 排序怎么办?此外,如果数据已经在数据结构中,我不知道任何常见的排序算法每次都会产生不同的排序顺序。也就是说,订单不保证但不是随机的。

4

2 回答 2

4

“不保证”意味着它可以随时更改(取决于当前的内存布局、垃圾收集器、时间......)如果您需要另一个属性的排序顺序保持稳定,您必须按两个属性对其进行排序(按 id 然后按名称 - 在您的情况下)

于 2010-08-05T03:52:25.260 回答
3

假设这些值来自 Active Record 模型,则排序来自数据库本身。不同的数据库以不同的方式处理排序,因此您可能需要检查特定数据库的文档。

于 2010-08-05T03:54:06.840 回答