我必须在数组中找到某个最高值(例如第五个最高值)。
我写了一个算法,但这需要太长时间。任何想法如何让它更快?
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];
}
}
答案 0 :(得分:1)
正如有人在评论中提到的,使用std:nth_element是一种方法,如果你不想自己编写算法。
如果你想自己写,你可能想看看这篇文章:
Nth largest element in a binary search tree
它解释了如何在二叉搜索树中找到第n个元素。
二维搜索树的信息可以在维基百科上找到:
http://en.wikipedia.org/wiki/Binary_search_tree
这应该给你一个很好的起点。