Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 以下排序算法对哪种类型的输入数据有好处/坏处?_Algorithm_Sorting - Fatal编程技术网

Algorithm 以下排序算法对哪种类型的输入数据有好处/坏处?

Algorithm 以下排序算法对哪种类型的输入数据有好处/坏处?,algorithm,sorting,Algorithm,Sorting,以下排序算法对什么类型的数据输入有效/无效?快速排序、合并排序、堆排序、插入排序等 我知道至少有两个因素会影响排序算法的性能:1)输入的大小,2)数据是否已经大部分排序。但我不知道这些因素是如何影响算法的效率的 我想对此进行详细研究,因此,如果您能为我指出任何源/链接,那就太好了。假设快速排序基于霍尔分区方案(中间值作为枢轴),那么对于几乎排序的数据,它不会降低到最坏情况下的时间复杂度O(n^2) 合并排序总是不正确的⌈log2(n)⌉ 移动。如果数据已排序,则比较的数量约为(⌈N⌈log2(

以下排序算法对什么类型的数据输入有效/无效?快速排序、合并排序、堆排序、插入排序等

我知道至少有两个因素会影响排序算法的性能:1)输入的大小,2)数据是否已经大部分排序。但我不知道这些因素是如何影响算法的效率的


我想对此进行详细研究,因此,如果您能为我指出任何源/链接,那就太好了。

假设快速排序基于霍尔分区方案(中间值作为枢轴),那么对于几乎排序的数据,它不会降低到最坏情况下的时间复杂度O(n^2)

合并排序总是不正确的⌈log2(n)⌉ 移动。如果数据已排序,则比较的数量约为(⌈N⌈log2(n)⌉)/二,

Heapsort的时间复杂度保持不变(重复可以减少运行时间)

插入排序是此列表中唯一一种在数据几乎已排序的情况下速度更快的排序,但其时间复杂度为O(n^2)。我认为对于几乎已排序的数据,时间复杂度应为~O(mn),其中m是不合适的元素数


自然合并排序的变体可能在扫描和识别已排序的运行时对小运行使用插入排序,对已排序的数据的时间复杂度为O(n)。

假设快速排序基于霍尔分区方案(中间值作为枢轴),则它不会降低到最坏情况下的时间复杂度O(n^2)对于几乎已排序的数据

合并排序总是不正确的⌈log2(n)⌉ 移动。如果数据已排序,则比较的数量约为(⌈N⌈log2(n)⌉)/二,

Heapsort的时间复杂度保持不变(重复可以减少运行时间)

插入排序是此列表中唯一一种在数据几乎已排序的情况下速度更快的排序,但其时间复杂度为O(n^2)。我认为对于几乎已排序的数据,时间复杂度应为~O(mn),其中m是不合适的元素数


自然合并排序的变体可能在扫描和识别已排序的运行时在小运行时使用插入排序,其时间复杂度为O(n)在已排序的数据上。

排序也取决于必须考虑的内存。例如,合并排序与other@prashantrana-是的,但这不会是一个问题,除非输入的大小超过可用内存的1/2,在这种情况下可以使用,但速度比标准慢合并排序。块合并排序受数据的影响,因为如果至少有2·sqrt(n),它运行得最好要排序的数组中的唯一值,因为这些值用于创建工作区,同时允许块合并排序保持稳定。要进行排序,还取决于必须考虑的内存。例如,合并排序占用的内存比other@prashantrana-没错,但这不是问题,除非输入的可用内存超过1/2,在这种情况下可以使用,但比标准合并排序慢。块合并排序受数据影响,因为如果要排序的数组中至少有2个sqrt(n)唯一值,则运行得最好,因为这些值用于创建工作区,同时允许块合并排序保持稳定。