我必须在数组中找到某个最大值(例如第五个最大值)。
我写了一个算法,但是花了太长时间。任何想法如何使其更快?
int tab[100];
// cin tab;
int position;
cin>>position;
// for example i need to find fifth highest
// value in an array.
int temp=0;
sort( tab, tab + 100, greater <int>() );
for(int y=0; y<100; ++y)
{
if (tab[y]==tab[y+1])
continue;
else
{
temp++;
if(temp==position)
cout<<tab[y];
}
}
正如有人在注释中提到的那样,如果您不想自己编写算法,则可以使用std:nth_element。
如果您想自己编写它,则可能需要看一下这篇文章:
它说明了如何在二进制搜索树中找到第n个元素。
可以在Wikipedia上找到有关二进制搜索树的信息:
http://en.wikipedia.org/wiki/Binary_search_tree
这应该为您提供一个良好的起点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句