现在的位置: 首页 > 综合 > 正文

找出数组中第二大的数

2013年12月28日 ⁄ 综合 ⁄ 共 803字 ⁄ 字号 评论关闭

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

第一种方法很简单:

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

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

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.我晕。

抱歉!评论已关闭.