找出数组中第二大的数

关于找出数组中第二大的数

第一种方法很简单:

      把这个数组按大小排序,升序的话就是倒数第二项,降序的话就是倒数第一项。,这样子多循环了好多次,性能不好,不过这样可以找出数组第三大,第四大···的数。

第二种方法和找数组最大项的思路一样,不过要先定义两个数,即最大数和第二大数。

public int FindSecond(int[] arr)

{

int length=arr.length; //数组长度

int max=arr[0];    // 当前第一项为最大项

int second=arr[1]; //当前第二项为最大项

if (max < second)     //比较第一二项的大小,根据大小设定max,second
{
   int temp = max;
   max = second;
   second = temp;
}

for(int i=2;i<length;i++)     //让后续的每一项和max,second比较,
{
   if (arr[i] > max)            //修改max的值
   {
    second = max;
    max = arr[i];
   }
   else if (arr[i] < second)   //比second小继续循环。
   {
    continue;
   }
   else                               // 此项即比max小,但比second数组大的项,把它重新复制给second
   {
    second = arr[i];
   }
}
return second;
}


-----------

    int a1 = 0xfffff880;
    int b = a1 << 8;
    int c = 0xfff88000;
    qDebug()<<a1<<endl;
    qDebug()<<b<<endl;
    if(b == c)qDebug()<<"good."<<endl;
打印出good.

a1向左位移8个位,注意了,是二进制的位移,不是0xffffff00.我晕。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值