Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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 Heapsort策略:基于选择还是基于交换?_Algorithm_Heapsort - Fatal编程技术网

Algorithm Heapsort策略:基于选择还是基于交换?

Algorithm Heapsort策略:基于选择还是基于交换?,algorithm,heapsort,Algorithm,Heapsort,我无法决定哪种方法更适合希普索尔。是选择根还是用最后一个元素更改根?这两个选项中有什么是正确的?根据 Heapsort是一种基于比较的排序算法,属于选择排序系列 Heapsort与选择排序类似,它定位最大值并将其放置在最终数组位置 因此,基于选择似乎是正确的。当您只查看第一个元素时,这是正确的,之后我会认为它更像是一种交换,因为它交换的更多,而不是保持堆不变的值。@Surt通过一系列交换来恢复堆属性只是一种可能的方法,甚至不是最好的方法。它类似于通过一系列交换将数组旋转一个位置,除了这里数组不是

我无法决定哪种方法更适合希普索尔。是选择根还是用最后一个元素更改根?这两个选项中有什么是正确的?

根据

Heapsort是一种基于比较的排序算法,属于选择排序系列

Heapsort与选择排序类似,它定位最大值并将其放置在最终数组位置


因此,基于选择似乎是正确的。

当您只查看第一个元素时,这是正确的,之后我会认为它更像是一种交换,因为它交换的更多,而不是保持堆不变的值。@Surt通过一系列交换来恢复堆属性只是一种可能的方法,甚至不是最好的方法。它类似于通过一系列交换将数组旋转一个位置,除了这里数组不是连续的,它是从根到旧根值的最终位置的路径。有一系列等价的移动(而不是互换),其成本约为操作数量的一半。