Arrays 对8个元素的数组进行排序的最快方法是什么?

Arrays 对8个元素的数组进行排序的最快方法是什么?,arrays,algorithm,sorting,time-complexity,insertion-sort,Arrays,Algorithm,Sorting,Time Complexity,Insertion Sort,对于大型数组,如果需要就地排序,答案通常是快速排序;如果需要保证O(nlogn),答案通常是合并排序 但是,对于小型阵列,插入排序比上述方法更快 是否有一种不同的绝对最短方式来精确排序8个元素 还是插入排序是一种方法?渐近分析不适用于任何固定数。您需要选择一个成本模型并进行分析。例如,对于8个元素这样的小数目,很可能存在一个针对给定成本进行了充分优化的排序网络:可能是比较,也可能是最大并行度 这就像问一根绳子有多长:你没有固定足够的假设 在现实世界中,对于这些类型的大小,所有类型的效果都会出现:

对于大型数组,如果需要就地排序,答案通常是快速排序;如果需要保证O(nlogn),答案通常是合并排序

但是,对于小型阵列,插入排序比上述方法更快

是否有一种不同的绝对最短方式来精确排序8个元素


还是插入排序是一种方法?

渐近分析不适用于任何固定数。您需要选择一个成本模型并进行分析。例如,对于8个元素这样的小数目,很可能存在一个针对给定成本进行了充分优化的排序网络:可能是比较,也可能是最大并行度

这就像问一根绳子有多长:你没有固定足够的假设


在现实世界中,对于这些类型的大小,所有类型的效果都会出现:例如,缓存行为。

我在问算法,哪种最快的算法可以精确排序8个元素?这个问题毫无意义。如果你修正了“N”,那么每个有限算法都会在某个常数的固定时间内运行,这取决于所选择的算法。您需要选择要最小化的内容(比较、元素交换等);然后你可以优化(例如,你的成本模型是什么?)执行算法所需的步骤数决定了算法的理论运行时间,这是用来确定算法的渐进复杂性的,这非常有意义。@Makogan实际上,他是对的:如果N是固定的,因为运行时间是常数,所以渐近分析是不相关的。如果你说算法是O(N^2),N固定在8,那么运行时间是O(64),这是一个常数。由于在渐近分析中我们忽略了常数,“用冒泡排序对8项排序的算法复杂度是多少”的答案是“O(1)。@Makogan指令数严重依赖于实现。但是在任何情况下,如果你想知道你的用例最好的方法是编码和度量它!我们可能整天都在争论什么方法最快。如果你想保证O(n logn)而不使用O(n)额外的空间,那就看看heapsort。对于较小的n值,有最优的方法。如果。。。else语句。稍微搜索一下就可以得到一个最佳的8项排序。