//Algorithm analysis
//
///
#include<stdio.h>
#define n 10
int a[n];
void second(int i,int j,int *fmin1,int *fmin2)//最小的两个数*fmin1和*fmin2
{
int lmin2,lmin1,rmin2,rmin1;
int mid;
if(i==j)//只有一个数时
*fmin2=*fmin1=a[i];
else if(i==(j-1))//只有两个数时
{
if(a[i]<a[j])
{
*fmin2=a[j];
*fmin1=a[i];
}
else {
*fmin2=a[i];
*fmin1=a[j];
}
}
else //很多数时,规模较大,把规模分小
{
mid=(i+2)/2;
second(i,mid,&lmin2,&lmin1);
second(mid+1,j,&rmin2,&rmin1);
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;
}
}
}
int main()
{
int i,fmin1,fmin2;
printf("please int five integer:");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
second(0,i-1,&fmin1,&fmin2);
printf(":%d %d\n",fmin1,fmin2);
return 0;
}