定义一个函数,找出指定的个数的最大整数。比如有十个个数的数组,指定三个,那么久找出三个最大的数。
#include <string>
#include <iostream>
/*func(3, {1,2,3,4,6,7,8})={6,7,8}
func(4, {1,2,3,4,6,7,8,9 10,21,24,25,26})={26,25,24,21}
*/
bool get_larget_number(int len, const int *arr, int arr_len, int *des)
{
const int *tmp_arr=arr;
int i, j, tem_len=len;
bool res = false;
if(len<0 || len>arr_len || des==NULL)
return res;
for(i=0; i<tem_len; i++)
{
*(des+i) = *(tmp_arr+i);
}
for(j=0; j<tem_len; j++)
{
for(i=0; i<tem_len-1; i++)
{
if(*(des+i) < *(des+i+1))
{
int tmp = *(des+i);
*(des+i) = *(des+i+1);
*(des+i+1) = tmp;
}
}
}
for(i=len; i<arr_len; i++)
{
bool is_exchange = false;
int tmp;
for(j=0; j<len; j++)
{
tmp = *(des+j);
if(*(tmp_arr+i) > *(des+j))
{
*(des+j) = *(tmp_arr+i);
is_exchange = true;
break;
}
}
if(is_exchange && j!=len-1)
{
for(int tj=j; tj<len; tj++)
{
int tmp0 = *(des+tj+1);
*(des+tj+1) = tmp;
tmp = tmp0;
}
}
}
res = true;
return res;
}
int main(int argc, char **argv)
{
int arr_len=0;
int a[]= {21,2,3,4,6,10,32,34,56,7,90,98,11,112,234,900,567,87};
int *b=0;
arr_len = sizeof(a)/sizeof(int);
int len =10;
b=new int[len];
bool res=get_larget_number(len,a,arr_len,b);
if(res)
for(int i=0;i<len; i++)
cout<<b[i]<<endl;
delete [] b;
}