定义函数,找出数组中最大的指定的个数

定义一个函数,找出指定的个数的最大整数。比如有十个个数的数组,指定三个,那么久找出三个最大的数。

 

#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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值