#include<iostream>
using namespace std;
void swap(int &a,int &b)
{
int temp;
temp=b;
b=a;
a=temp;
}
void arrangeRight(int Arr[],int s,int e,int k)
{
if(s >= e)
{
return;
}
if(k=e-s+1)
{
return;
}
int i=s,j=e;
int key=Arr[s];
while(i!=j)
{
while(i<j&&Arr[j]>=key)
{
--j;
}
swap(Arr[i],Arr[j]);
while(i<j&&Arr[i]<=key)
{
++i;
}
swap(Arr[i],Arr[j]);
}
if(k==e-i+1)
return;
else if(k<e-i+1)
{
arrangeRight(Arr,i+1,e,k);
}
else
{
arrangeRight(Arr,s,i-1,k-e+i-1);
}
}
void QSort(int Arr[],int begin,int end)
{
if(begin>=end)
{
return;
}
int cmp=Arr[begin];
int i=begin,j=end;
while(i!=j)
{
while(i<j&&Arr[j]>=cmp)
{
j--;
}
swap(Arr[i],Arr[j]);
while(i<j&&Arr[j]<=cmp)
{
i++;
}
swap(Arr[i],Arr[j]);
}
QSort(Arr,begin,i-1);
QSort(Arr,i+1,end);
}
int main()
{
int Arr[]={10,3,5,2,6,11,9,23,15,18,25,31};
int size=sizeof(Arr)/sizeof(int);
int tmp[size];
int m;
cin>>m;
arrangeRight(Arr,0,size-1,m);
QSort(Arr,size-m,size-1);
for(int i=size-m;i<=size-1;i++)
{
cout<<Arr[i]<<" ";
}
return 0;
}
输出前m大的数
最新推荐文章于 2020-03-23 13:15:36 发布