关于找出数组中第二大的数
第一种方法很简单:
把这个数组按大小排序,升序的话就是倒数第二项,降序的话就是倒数第一项。,这样子多循环了好多次,性能不好,不过这样可以找出数组第三大,第四大···的数。
第二种方法和找数组最大项的思路一样,不过要先定义两个数,即最大数和第二大数。
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.我晕。