在数组中查找某个最高值

时间:2014-08-06 10:44:12

标签: c++ arrays

我必须在数组中找到某个最高值(例如第五个最高值)。

我写了一个算法,但这需要太长时间。任何想法如何让它更快?

    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];
        }
    }

1 个答案:

答案 0 :(得分:1)

正如有人在评论中提到的,使用std:nth_element是一种方法,如果你不想自己编写算法。

如果你想自己写,你可能想看看这篇文章:

Nth largest element in a binary search tree

它解释了如何在二叉搜索树中找到第n个元素。

二维搜索树的信息可以在维基百科上找到:

http://en.wikipedia.org/wiki/Binary_search_tree

这应该给你一个很好的起点。