【问题标题】:Most effective way of sorting arrya [closed]排序arrya的最有效方法[关闭]
【发布时间】:2015-01-24 20:08:51
【问题描述】:

在任何语言中排序数组最有效的方法是什么? 具有最低的 O() 和 P()。我发现外壳排序是最好的排序方式之一,但有更快的方法吗?

【问题讨论】:

  • 快速排序可能是最快的通用算法,速度为 O(n logn)
  • 找出这个问题的答案最有效的方法是什么?谷歌...

标签: algorithm sorting theory any


【解决方案1】:

简而言之:

Introsort 和 Timsort 是现实世界中最常用的排序算法。

它们在平均复杂度和最坏情况下都具有 O(nlogn) 复杂度,这使得它们在快速排序为 O(n^2) 的特定情况下优于快速排序。 Introsort 用于 C 和 C++ STL,而 Timsort 用于 Python 和 Java 实现(至少用于对 Java 中的对象数组进行排序)。

Shell 排序在 O(n(logn)^2) 中,因此速度稍慢,但使用的内存较少,因此适用于嵌入式系统。详情请见enter link description here

【讨论】:

  • 堆排序使用O(1)内存和O(nlogn)时间,难道不比shell排序好吗?
  • 是的,它的内存使用量也很小,但比较嵌入式系统中的排序算法是一个微妙的主题。参见:embeddedgurus.com/stack-overflow/2009/03/… 例如
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-19
  • 1970-01-01
  • 1970-01-01
  • 2013-12-08
  • 1970-01-01
  • 2023-03-29
相关资源
最近更新 更多