这些排序算法在实际应用中有用吗?
或者它只是具有n ^ 2复杂度的排序算法的基本示例?
有人可以举一些使用它的例子吗?
答案 0 :(得分:3)
插入排序是排序非常小的数组的最快排序算法之一。
实际上,当要排序的子数组低于某个阈值时,许多quicksort / mergesort实现会停止,然后插入排序将用于这些小数组。
实践中很少使用选择排序。
答案 1 :(得分:1)
对于小输入大小,插入排序实际上非常快,因为其复杂性中隐藏的常量很小。在某种程度上,插入排序比合并排序更快。
因此,对于许多流行的排序算法,当数组大小变得非常小时,采用插入排序。
底线: AO(N 2 )算法在实践中可能比O(N * logN)算法更快,因为隐藏的常数足够小的输入
答案 2 :(得分:1)
是的,插入排序广泛用于工业应用。这主要是因为几个流行的C ++标准库(例如libstdc++和libc++实现了sort
例程作为插入排序和深度限制快速排序的组合。
这个想法是插入排序在几乎排序的数组上运行得非常快,而对于快速排序排序输入的直接实现会导致最坏情况的行为。因此,组合算法首先应用类似快速排序的算法对输入进行部分排序,然后通过调用插入排序结束。
在libc++插入排序中,如果输入大小足够小(但大于五个元素,因为大小< = 5作为特殊情况处理),默认情况下也会用于排序。
答案 3 :(得分:0)