0

查看 -

  1. http://www.facebook.com/directory
  2. http://www.linkedin.com/directory/people-a

假设我在 mysql 表中有一个 id 和名称列表。我应该如何对这些名称进行排序,创建一个与 facebook/linkedin 相同的目录,并使用 mysql 表中的数据。

我应该如何以 mysql 或其他形式存储我的数据?

我还希望以后能够添加更多名称。

4

1 回答 1

0

如果您只想显示已排序的项目,则可以使用 order by 子句

select ids, name from tbles order by name aesc

也就是说,不可能有一个永久排序的数据库。出于存储优化的简单原因,数据库存储不允许这样做。

为了解决您的问题,您可以将数据从 MySql 提取到文件中,按字段(名称)对其进行排序,然后使用 Web 应用程序显示它。在这种方法中,您首先必须确定您的排序方法。

最好的排序算法具有O(NlogN)的时间复杂度。这是对随机数组(即元素可能以随机顺序排列的数组)中的数据进行排序的理论上可能的最短时间。看看著名的算法QuickSortMergeSort。根据您是否需要稳定的排序和数据类型来决定。

如果您可以使用 Java,那么您可以使用Array API进行预构建排序或集合排序并编写比较器以进行字母排序(默认为自然排序 - ASCII)。

现在查看输入中的任何模式。如果您知道数组中数据的模式(如部分排序、重复值),则可以编写自己的 MergeSort 或 QuickSort 版本,稍作修改以加快排序速度。

在这一步之后,如果您的 id 数以百万计,那么上述算法应该可以在几分钟内轻松排序。否则对于非常大的数据集(以十亿为单位) - 您可以拆分数据并使用更多机器/内核编写分布式/并行代码,或者如果您有时间,则只需在普通机器上等待数小时(可能是数天)。

于 2013-09-22T00:26:48.900 回答