该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#define N 20
int main()
{
int a[N];
int i;
int compare = 0, add = 0;
int max, smax;
for(i = 0; i
// max=smax=-1;//must be smaller than any of a[i]
++compare;
add += 2;
if (a[0] > a[1]) {
max = a[0];
smax = a[1];
} else {
max = a[1];
smax = a[0];
}
for(i = 2; i
{
if(++compare && a[i]>smax)
{
if(++compare && a[i]>max)
{
smax=max;
max=a[i];
add+=2;
}
else
{
smax=a[i];
++add;
}
}
}
printf("\nMax:%d subMax:%d, Compare:%d Add:%d\n",max, smax, compare,add);
// system("pause");
return 0;
}
我觉得把第一、二元素分离出来,先比较,然后放进 max 和 smax 比设成 -1 好。
还有,assiss,定义了个 j,是不是原来打算从数组两头来,省一点循环?哈哈,我刚开始也是这样,后来发现不怎么好,好像没必要�