#include<iostream> using namespace std; struct minx { int min1; int min2; }; minx find_min2(int *a,const int n) { int min1=0,min2=0; if(n%2)//n为奇数时 { min1=min2=a[0]; int i=1; while(i<n) { if(a[i]>a[i+1]) { if(a[i+1]>=min2) { i+=2; continue; } else if(min1<a[i+1]&&a[i+1]<min2) { min2=a[i+1]; } else if(a[i+1]<min1&&min1<a[i]) { min2=min1; min1=a[i+1]; } else if(a[i]<min1) { min1=a[i+1]; min2=a[i]; } } else { if(a[i]>=min2) { i+=2; continue; } else if(min1<a[i]&&a[i]<min2) { min2=a[i]; } else if(a[i]<min1&&min1<a[i+1]) { min2=min1; min1=a[i]; } else if(a[i+1]<min1) { min1=a[i]; min2=a[i+1]; } } i+=2; } } else//n为偶数时 { if(a[0]>a[1]) { min2=a[0]; min1=a[1]; } else { min1=a[0]; min2=a[1]; } int i = 2; while(i<n) { if(a[i]>a[i+1]) { if(a[i+1]>=min2) { i+=2; continue; } else if(min1<a[i+1]&&a[i+1]<min2) { min2=a[i+1]; } else if(a[i+1]<min1&&min1<a[i]) { min2=min1; min1=a[i+1]; } else if(a[i]<min1) { min1=a[i+1]; min2=a[i]; } } else { if(a[i]>=min2) { i+=2; continue; } else if(min1<a[i]&&a[i]<min2) { min2=a[i]; } else if(a[i]<min1&&min1<a[i+1]) { min2=min1; min1=a[i]; } else if(a[i+1]<min1) { min1=a[i]; min2=a[i+1]; } } i+=2; } } minx temp = {min1,min2}; return temp; } int main() { int a[]={1,2,-1,4,5,-90,10,1}; const int n = sizeof(a)/sizeof(*a); minx temp = find_min2(a,n); cout<<"min1 = "<<temp.min1<<"/nmin2 = "<<temp.min2<<endl; }