选择排序是一种有效的算法吗?

时间:2009-12-03 23:21:39

标签: sorting selection quicksort

我知道这是一种二次时间算法,但它与其他排序算法(如快速排序或冒泡排序)相比如何?

4 个答案:

答案 0 :(得分:3)

排序算法通常根据您拥有的数据的性质而有所不同。

然而,虽然冒泡排序和选择排序很容易理解(并实现)排序算法,但它们的运行时间是O(n ^ 2),即你可能得到的最差时间。

就快速排序而言,它需要O(n log n)时间因此它是一个很好的排序。但是,在某些情况下也可能需要O(n ^ 2)。

答案 1 :(得分:1)

二次时间算法(取决于数据集的大小)可能会慢得令人难以置信。

n = 10e78(约为宇宙中的原子数)

对于二次算法,即n *(10e78)。对于nlog(n)算法,如quicksort或mergesort,那是n * 262。这是一个巨大的差异。

但是如果您的数据集相对较小(比如说<1000项),那么性能差异可能不会引人注意(除非,可能重复进行排序)。在这些情况下,通常最好使用最简单的算法,如果结果太慢,则稍后进行优化。

“过早优化是所有邪恶的根源。” -Dir Tony Hoare,由Donald Knuth推广

答案 2 :(得分:0)

Wikipedia知道所有。

选择排序非常糟糕。

答案 3 :(得分:0)

如果您所拥有的数据仅包含正整数,则可能需要查看Bucket Sort。该算法在正确的条件下可以具有线性运行时间O(n)。