Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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 - Fatal编程技术网

Algorithm 找到最小值和最大值的最佳比较次数

Algorithm 找到最小值和最大值的最佳比较次数,algorithm,Algorithm,我知道查找n个密钥的最小值和最大值的最佳比较次数是 3n/2 但是如果n是2的整数次幂呢?那么比较的数量是多少呢 更多详情: 例如,图形程序可能需要缩放一组(x,y) 将数据安装到矩形显示屏或其他图形输出设备上。为此,程序必须首先确定每个坐标的最小值和最大值。在这一点上,如何使用“θ(n)比较确定n个元素的最小值和最大值应该是显而易见的,这是渐近最优的:我们只需单独找到最小值和最大值,每个元素使用n-1个比较,总共2n-2个比较。因此在这种情况下,我们可以在3[n/2]中找到最小值和最大值比较。

我知道查找n个密钥的最小值和最大值的最佳比较次数是

3n/2

但是如果n是2的整数次幂呢?那么比较的数量是多少呢

更多详情:

例如,图形程序可能需要缩放一组(x,y)
将数据安装到矩形显示屏或其他图形输出设备上。为此,程序必须首先确定每个坐标的最小值和最大值。在这一点上,如何使用“θ(n)比较确定n个元素的最小值和最大值应该是显而易见的,这是渐近最优的:我们只需单独找到最小值和最大值,每个元素使用n-1个比较,总共2n-2个比较。因此在这种情况下,我们可以在3[n/2]中找到最小值和最大值比较。但是如果n是2的幂整数呢?那么,找到n个键的最小值和最大值的比较次数是多少

@TimBiegeleisen我添加了一些细节为什么你认为
n
是2的整数幂会有区别?也就是说,为什么你认为
3n/2
不适用于这里?@MarkDickinson我只是不知道比较的数量是对数还是保持不变。因为我们首先将输入中的元素对彼此进行比较,然后将较小的元素与当前最小值进行比较,将较大的元素与当前最大值进行比较,每2个元素进行3次比较elements@jon:简单地说,如果N=2^p,效果不会更好。不重要的原因是,我们总是可以通过重复序列的最后一个元素来延长序列。这不会影响最小值和最大值。因此,如果对N=2^p进行O(logn)操作,则对所有其他长度也进行O(logn)操作。实际上,最佳比较次数是
ceil(3n/2)-2
。n是否是2的幂的整数也无关紧要。