有泡泡,插入,选择,快速排序算法。
哪一个是最快的'算法
代码大小并不重要。
Bubble sort
insertion sort
quick sort
我试着检查速度。当数据已经排序时,冒泡,插入的Big-O是n,但算法在大型列表上太慢。
仅使用一种算法是否合适? 或者更快地使用不同的混合物?
答案 0 :(得分:3)
Quicksort通常非常好,只有当数据接近已经订购时,或者当数据具有很多相似性(大量重复键重复)时才会真正掉线,在这种情况下它会更慢。
如果你对你的数据一无所知,你不介意冒快速排序的风险(如果你想一想,你可能会对你的情况作出决定,如果你有可能得到这个(从已经订购的数据))然后快速排序永远不会是一个坏的选择。
如果您确定您的数据已经或有时(或经常足以成为一个问题)已经排序(或显着部分排序),或者您决定不能冒最大限度快速排序的风险,那么考虑时间。
正如您对问题的评论所指出的那样,如果获得最佳性能非常重要,您应该考虑实施多种算法并尝试使用良好的代表性样本数据。
答案 1 :(得分:0)
HP / Microsoft std :: sort是introsort(如果嵌套达到某个限制,快速排序切换到堆排序),std :: stable_sort是自下而上mergesort的变体。
对于大多数随机整数的数组或向量进行排序,counting / radix sort通常最快。
大多数external sorts是k-way自底向上合并排序的一些变体(初始内部排序阶段可以使用上面提到的任何算法)。
为了对少量(16个或更少)固定数量的元素进行排序,可以使用sorting network。这似乎是鲜为人知的算法之一。如果必须重复排序可能在硬件中实现的小组元素,那将非常有用。