64,683
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
#define N 10
void daxiao(int i,int j,int &fmin1,int &fmin2,int &fmax1,int &fmax2,int a[])
{
int mid;
int lmin1,lmin2,lmax1,lmax2,rmin1,rmin2,rmax1,rmax2;
if(i==j) fmin1=fmin2=fmax1=fmax2=a[i];
else if (i==j-1)
if(a[i] <a[j])
{
fmin2=fmax1=a[j];
fmin1=fmax2=a[i];
}
else
{
fmin2=fmax1=a[i];
fmin1=fmax2=a[j];
}
else
{
mid=(i+j)/2;
daxiao(i,mid,lmin1,lmin2,lmax1,lmax2,a);
daxiao(mid+1,j,rmin1,rmin2,rmax1,rmax2,a);
if(lmin1 <rmin1)
if(lmin2 <rmin1)
{
fmin1=lmin1;
fmin2=lmin2;
}
else
{
fmin1=lmin1;
fmin2=rmin1;
}
else
if(rmin2 <lmin1)
{
fmin1=rmin1;
fmin2=rmin2;
}
else
{
fmin1=rmin1;
fmin2=lmin1;
}
if(lmax1>rmax1)
if(lmax2>rmax1)
{
fmax1=lmax1;
fmax2=lmax2;
}
else
{
fmax1=lmax1;
fmax2=rmax1;
}
else
if(rmax2>lmax1)
{
fmax1=rmax1;
fmax2=rmax2;
}
else
{
fmax1=rmax1;
fmax2=lmax1;
}
}
}
int main()
{
int a[N],i,fmin1,fmin2,fmax1,fmax2;
i=N;
cout <<"请为数组输入" <<i <<"个整数";
for( i=0;i <N;i++)
cin>>a[i];
fmin1=fmin2=fmax1=fmax2=0;
daxiao(0,N,fmin1,fmin2,fmax1,fmax2,a);
cout <<"第一小的数是:" <<fmin1 <<endl
<<"第二小的数是:" <<fmin2 <<endl
<<"第一大的数是:" <<fmax1 <<endl
<<"第二大的数是:" <<fmax2 <<endl;
return 0;
}
使用lz的代码:
[root@localhost study]# g++ test.cpp
[root@localhost study]# ./a.out
请为数组输入10个整数10 9 8 7 6 5 4 3 2 1
第一小的数是:0
第二小的数是:1
第一大的数是:10
第二大的数是:9