2008-09-16 168 views

回答

0

你会发现大多数开发库附带一个快速排序算法的实现,它通常是最快的排序算法。检查出Wikipedia link here

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

Bubble sort!只是在开玩笑:)

大概你最好的选择是quicksortmergesort

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

0

在C#,列表有的.sort()。

一般快速排序是非常快的在许多情况下,但它总是依赖数组的大小,

这里是link

1

的回答你的问题是密切相关的一些细节,你的天堂”提供。 “最佳/最快”的方式取决于字段的长度,你需要排序多少,你有多少可用内存,磁盘和内存的相对速度,字符串内容的细节......,ad nauseam

Knuth Vol 3有各种各样的方法的细节。我不记得他是否讨论过基底排序,但他可能会这样做。如果他没有,你应该查找一些基数排序的参考。它只适用于狭隘的情况,但积极飞向那里。如果你有一小组短字符串,由于较低的开销,Bubble Sort在某些体系结构上的性能会好于复杂排序。 C运行时库包含一个快速排序版本,因为在某些情况下,它可能是一个非常有效的大型数据集算法。

Net-net,答案是“它要看”。

1

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

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