【发布时间】:2015-08-22 19:53:44
【问题描述】:
我想找到最快的方法来查找小于/大于数组中每个元素的元素数量。
例如:数组是[5, 6, 8, 2, 4]。考虑到第一个元素,没有小于它的元素是 2。
我能做的最好的事情就是将每个元素与数组的其余元素进行比较,但对于条目数约为 10^5 的大型数组来说,这需要很长时间。
我的代码:
for(i=0;i<n;i++)
{
count=0;
for(j=0;j<n;j++)
{
if( i!=j && (ar[i]>ar[j]) )
{
count++;
}
}
printf("%lld ",count);
}
编辑:我想显示小于每个数组元素的元素数。对于上面的例子,我希望答案是:2 3 4 0 1 数组可以包含重复值。
【问题讨论】:
-
您的问题是,如果您想要确切的正确答案,您要么必须遍历整个库存(因为您不知道下一个元素将是什么),要么对其进行排序,或者使用一些其他启发式方法,并粗略估计下一个元素可能是什么。
-
检查这个。它会帮助你。stackoverflow.com/questions/30672430/…
标签: c arrays algorithm performance search