哎呀,发错了,这是求最小的,代码,晕了,下面是正确的
int * GetTop(const int *array,int size,int length)
{
int *p=new int[length];
//开辟动态数组用于存储,并将被返回
int i,j,k;
int index=0,top=0,count=0;
for(i=j=0;i<size;i++)
{
if(array[i]>array[j])
j=i;
}
*p=array[j];
//原数组的最大值存储在p
for(k=1;k<length;k++)
//循环开始
{
index=*(p+k-1);
top=k-1;
count=0;
while(top>=0)
{
if(index==*(p+top))
{
count++;
top--;
}
else break;
}
//获取跳过次数
i=j=0;
while(1)
{
if(array[i] > *(p+k-1))
{
i++;
j++;
}
else
if(array[i] == *(p+k-1) && count>0)
{
i++;
j++;
count--;
}
else break;
}
for(;i<size;i++)
{
if(array[i] > *(p+k-1))
continue;
else
if(array[i] == *(p+k-1) && count>0)
{
count--;
continue;
}
if(array[i]>array[j])
{
j=i;
}
}
*(p+k)=array[j];
}
return p;
}