求一组数组的最小值和最大值/求数组的最小值和次小值

发布时间:2016-12-10 1:23:52 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"求一组数组的最小值和最大值/求数组的最小值和次小值",主要涉及到求一组数组的最小值和最大值/求数组的最小值和次小值方面的内容,对于求一组数组的最小值和最大值/求数组的最小值和次小值感兴趣的同学可以参考一下。

求最大值和最小值: 首先将数组的个数分为奇数个和偶数个,奇数时:最小值和最大值都为a[0],剩下的分组,一组两个,跟最大值,最小值比较;偶数时,对前两个进行比较,确定最大值和最小值。 #include<iostream> using namespace std; int find(int a[],int n) {  int min=0,max=0,i;  if(n%2==1)  {   min=a[0];   max=a[0];   for(i=1;i<n;i+=2)   {    if(a[i]<=a[i+1])    {     if(a[i]<min)      min=a[i];     if(a[i+1]>max)      max=a[i+1];    }    else    {     if(a[i]>max)      max=a[i];     if(a[i+1]<min)      min=a[i+1];    }   }  }  else  {   if(a[0]<=a[1])   {    min=a[0];    max=a[1];   }   else   {    min=a[1];    max=a[0];   }   for(i=2;i<n;i+=2)   {    if(a[i]<=a[i+1])    {     if(a[i]<min)      min=a[i];     if(a[i+1]>max)      max=a[i+1];    }    else    {     if(a[i]>max)      max=a[i];     if(a[i+1]<min)      min=a[i+1];    }   }  }  cout<<min<<' '<<max<<endl;  return 0; } int main() {  int a[100],n=0;  for(n=0;n<100;n++)  {   cin>>a[n];   if(cin.get()=='\n')    break;  }  find(a,n+1);  return 0; } 求最小值和次小值 同上的思路:奇数时:前面两两为一组,确定最小值和次小值,然后最后一个跟最小值和次小值进行比较,最终确定最小值和次小值;偶数时,前面两两为一组,确定最小值和次小值。 #include<iostream> using namespace std; int find(int a[],int n) {  int min=0,smin=0,i;  if(n%2==1)  {   if(a[0]<=a[1])   {    min=a[0];    smin=a[1];   }   else   {    min=a[1];    smin=a[0];   }   for(i=2;i<n-1;i+=2)   {    if(a[i]<=a[i+1])    {     if(a[i]<min)     {            if(a[i+1]<min)       smin=a[i+1];      else       smin=min;                     min=a[i];     }     else     {      if(a[i]<smin)          smin=a[i];      else if(a[i+1]<smin)       smin=a[i+1];     }    }    else    {     if(a[i+1]<min)     {            if(a[i]<min)       smin=a[i];      else       smin=min;                     min=a[i+1];     }     else     {      if(a[i+1]<smin)          smin=a[i+1];      else if(a[i]<smin)       smin=a[i];     }    }   }   if(a[n-1]<=min)   {    smin=min;    min=a[n-1];       }   else   {    if(a[n-1]<smin)     smin=a[n-1];   }     }  else  {   if(a[0]<=a[1])   {    min=a[0];    smin=a[1];   }   else   {    min=a[1];    smin=a[0];   }   for(i=2;i<n;i+=2)   {    if(a[i]<=a[i+1])    {     if(a[i]<min)     {            if(a[i+1]<min)       smin=a[i+1];      else       smin=min;                     min=a[i];     }     else     {      if(a[i]<smin)          smin=a[i];      else if(a[i+1]<smin)       smin=a[i+1];     }    }    else    {     if(a[i+1]<min)     {            if(a[i]<min)       smin=a[i];      else       smin=min;                     min=a[i+1];     }     else     {      if(a[i+1]<smin)          smin=a[i+1];      else if(a[i]<smin)       smin=a[i];     }    }   }  }  cout<<min<<' '<<smin<<endl;  return 0; } int main() {  int a[100],n=0;  for(n=0;n<100;n++)  {   cin>>a[n];   if(cin.get()=='\n')    break;  }  find(a,n+1);  return 0; }

上一篇:Android 触屏事件处理_手势识别 鼠标事件
下一篇:进程与线程的区别

相关文章

相关评论