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