我知道这是一种二次时间算法,但它与其他排序算法(如快速排序或冒泡排序)相比如何?
答案 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)。