数组 寻找最大的第k个数

int Partion(int asy[],int begin,int end)

{

    int k=begin;



    int key=asy[end];



    for(int i=begin;i<=end;++i)

    {

        if(asy[i]>key)

        {

            int temp=asy[k];

            asy[k]=asy[i];

            asy[i]=temp;

            k++;

        }

    }

    int temp=asy[k];

    asy[k]=asy[end];

    asy[end]=temp;

    return k;

}
void GetTopK(int asy[],int begin,int end,int k)

{

    int m=begin;

    if(begin<end)

    {

        int m=Partion(asy,begin,end);

        if(m+1==k)

        {

            return;

        }

        else if(m+1>k)

        {

           GetTopK(asy,begin,m-1, k);

        }

        else 

        {

            GetTopK(asy,m+1,end, k);

        }

    }

}

 

你可能感兴趣的:(数组)