Arrays 查找数组的顶部和底部5个元素
问题: 我有一个n的数组≥ 10000个不同的正整数。尝试编写一个算法,输出A的一个元素x,这样x不在A的前5个元素中,也不在A的后5个元素中。A的前5个元素和后5个元素是A排序时的前5个元素和后5个元素。我还需要做大约50次比较 我所做的: 我用等级的概念来解决这个问题。 我取任意6个数字并找到其最大值。因此,这将确保我的数字不在前五个元素中。但是,这并不能确保我的数字不在最后5个元素中 迄今为止的伪代码: //从数组A中选择任意6个元素Arrays 查找数组的顶部和底部5个元素,arrays,algorithm,rank,Arrays,Algorithm,Rank,问题: 我有一个n的数组≥ 10000个不同的正整数。尝试编写一个算法,输出A的一个元素x,这样x不在A的前5个元素中,也不在A的后5个元素中。A的前5个元素和后5个元素是A排序时的前5个元素和后5个元素。我还需要做大约50次比较 我所做的: 我用等级的概念来解决这个问题。 我取任意6个数字并找到其最大值。因此,这将确保我的数字不在前五个元素中。但是,这并不能确保我的数字不在最后5个元素中 迄今为止的伪代码: //从数组A中选择任意6个元素 int max = A[0]; for(int i
int max = A[0];
for(int i = 0; i<6 ; i++)
{
if( A[i] > max)
max = A[i];
}
int max=A[0];
对于(int i=0;i max)
max=A[i];
}
这将给我一个数字(最大值),它肯定不在数组的前5个元素中,但我该如何处理最后5个元素 我认为您可以进一步改进算法,从列表中查找11个随机元素,而不是6个元素 从这11个随机元素中,对元素进行排序,然后选择第6个元素
第6个元素必然既不在前5个元素中,也不在后5个元素中。我认为您可以进一步改进算法,从列表中查找11个随机元素,而不是6个元素 从这11个随机元素中,对元素进行排序,然后选择第6个元素
第六个元素必须既不在前5个元素中,也不在后5个元素中。如果你不在乎选择哪一个元素(只不过不在后5个和前5个元素中),你所能做的就是得到前11个元素(你可以做任何事情来选择它们,甚至是随机选择),对它们进行排序,然后选择中间的元素
a1, a2, a3, a4, a5, Yours, a7, a8, a9, a10, a11
即使使用冒泡排序,您最终也会得到(11-1)*10/2=50个比较,但使用冒泡排序会少很多。如果您不在乎选择哪一个元素(不仅不在乎是底部的5个和顶部的5个),那么您所能做的就是获得11个第一个元素(您可以做任何事情来选择它们,甚至是随机选择),对它们进行排序并选择中间的元素
a1, a2, a3, a4, a5, Yours, a7, a8, a9, a10, a11
即使使用冒泡排序,也会得到(11-1)*10/2=50个比较,但这样做会少很多。你是为前5%的元素做的,还是只为前5%和后5%的元素做的?你是为前5%的元素做的,还是只为前5%和后5%的元素做的?我只是理解她试图在前5%和后5%元素中找到的问题是错误的。很好的清洁解决方案。我只是理解了她试图在前5%元素和后5%元素中找到的问题。好的清洁溶液。