1

对字母数字字段进行排序的最佳/最快方法是什么?

4

6 回答 6

1

您无需指定目标语言,但无论它是什么,它都应该具有可靠的内置排序方法,因此请使用其中一种!对于 PHP...

加载到数组中并排序($array);

php排序...

$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);

foreach ($fruits as $key => $val)
{
    echo "fruits[" . $key . "] = " . $val . "\n";
}

输出:

fruits[0] = apple
fruits[1] = banana
fruits[2] = lemon
fruits[3] = orange
于 2008-09-16T22:50:02.177 回答
1

冒泡排序!只是在开玩笑 :)

可能您最好的选择是quicksortmergesort

两者都是 O(nlogn) 而不是冒泡排序的 O(n^2)

于 2008-09-16T22:50:15.000 回答
1

您的问题的答案与您未提供的一些细节密切相关。“最佳/最快”的方式取决于字段的长度、您必须排序的数量、可用的内存量、磁盘和内存的相对速度、字符串中的内容的详细信息,...,广告恶心

Knuth Vol 3 详细介绍了各种方法。我不记得他是否讨论过基数排序,但他可能会讨论。如果他没有,您应该查找有关 Radix Sorting 的一些参考资料。它仅在有限的情况下有用,但确实有效。如果您有一小部分短字符串,由于开销较低,冒泡排序在某些架构上的性能将优于复杂排序。C 运行时库包括一个版本的快速排序,因为在某些情况下,它对于较大的数据集可能是一种非常有效的算法。

Net-net,答案是“视情况而定”。

于 2008-09-16T22:52:18.960 回答
1

“最佳”方式取决于很多因素:

  1. 您需要支持的不仅仅是语言吗?
  2. 您是否需要同时支持一种以上的语言?
  3. 您是否需要支持当前操作系统或用户语言以外的语言?(例如,网络应用程序)
  4. 您是否需要支持多种编码?(unicode、utf-16le/utf-8、ansi 代码页等)
  5. 您是否需要支持长输入或高度冗余输入?(预计算或压缩可能会加快排序操作)
  6. 您是否需要支持大量输入,例如:百万或十亿输入?
于 2008-09-16T22:52:31.860 回答
0

您会发现大多数开发库都附带了快速排序算法的实现,这通常是最快的排序算法。在此处查看Wikipedia 链接

于 2008-09-16T22:48:09.030 回答
0

在 C# 中,List 具有 .Sort()。

一般来说,QuickSort 在很多情况下都非常快,但它总是取决于数组的大小,

这是链接

于 2008-09-16T22:50:17.217 回答