【发布时间】:2010-12-23 01:29:17
【问题描述】:
我知道这是一种二次时间算法,但它与其他排序算法(例如快速排序或冒泡排序)相比如何?
【问题讨论】:
标签: sorting selection quicksort
我知道这是一种二次时间算法,但它与其他排序算法(例如快速排序或冒泡排序)相比如何?
【问题讨论】:
标签: sorting selection quicksort
排序算法通常会根据您拥有的数据的性质而有所不同。
但是,尽管冒泡排序和选择排序很容易理解(和实现)排序算法,但它们的运行时间是 O(n^2),即您可能遇到的最差时间。
就平均而言,快速排序需要 O(n log n) 时间,因此它是一种出色的排序。但是,在某些情况下也可能需要 O(n ^ 2)。
【讨论】:
二次时间算法,取决于您的数据集的大小,可能会慢得令人难以置信。
n = 10e78(大约是宇宙中的原子数)
对于二次算法,即 n*(10e78)。对于 nlog(n) 算法,如快速排序或合并排序,这是 n*262。这是一个巨大的差异。
但是,如果您的数据集相对较小(例如,
“过早的优化是万恶之源。” - Tony Hoare 爵士,由 Donald Knuth 推广
【讨论】:
Wikipedia 无所不知。
选择排序非常糟糕。
【讨论】:
如果您拥有的数据仅包含正整数,您可能需要查看桶排序。该算法在正确的条件下可以具有线性运行时间 O(n)。
【讨论】: