字母数字排序

时间:2008-09-16 22:45:27

标签: sorting alphanumeric

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

6 个答案:

答案 0 :(得分:1)

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

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

php sort ...

$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

答案 1 :(得分:1)

Bubble sort!开个玩笑:)

可能你最好的选择是quicksortmergesort

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

答案 2 :(得分:1)

您的问题的答案与您未提供的一些细节密切相关。 “最好/最快”的方式取决于字段的长度,排序的数量,可用的内存量,磁盘和内存的相对速度,字符串中的内容的详细信息,......,< em> ad nauseam 。

Knuth Vol 3详细介绍了各种方法。我不记得他是否讨论过Radix排序,但他可能会这样做。如果他不这样做,你应该查看有关Radix Sorting的一些参考资料。它只适用于狭窄的情况,但在那里肯定会飞。如果您有一小组短字符串,由于较低的开销,Bubble Sort在某些体系结构上的性能优于复杂的排序。 C运行时库包含一个快速排序版本,因为在某些情况下,它可以是一个非常有效的大数据集算法。

Net-net,答案是“它取决于”。

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

您会发现大多数开发库附带了快速排序算法的实现,这通常是最快的排序算法。查看Wikipedia link here

答案 5 :(得分:0)

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

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

以下是link