算法(7)最大值和最小值

来源:互联网 发布:软件算命吧 编辑:程序博客网 时间:2024/06/07 19:45

        废话不说,直接上《算法导论》上的话。

        将一对输入元素相互进行比较,然后把较小的与当前的最小值进行比较,把较大值与当前的最大值进行比较。

        如果n是奇数,那么总共进行了 3*floor(n/2)次比较。如果n是偶数,则是先进行一次初始比较,然后进行3*(n-2)/2 次比较。因此,不管哪一种情况,总的比较次数至多是 3*floor(n/2)。

        上代码:

#include<vector>  #include<iostream>  using namespace std;   void show_vec(vector<int> vec)  {      cout<<endl;      for(int i=0;i<vec.size();i++)      cout<<vec[i]<<"   ";      cout<<endl;  } void find_max_min(vector<int> &vec,int *p_max,int *p_min){int max=vec[0],min=vec[0];if(vec.size()%2==0){for(int i=0;i<vec.size();i=i+2){if(vec[i]>vec[i+1]){if(max<vec[i])max=vec[i];if(min>vec[i+1])min=vec[i+1];}else{if(max<vec[i+1])max=vec[i+1];if(min>vec[i])min=vec[i];}}}else{//max=vec[0];//min=vec[0];for(int i=1;i<vec.size();i=i+2){if(vec[i]>vec[i+1]){if(max<vec[i])max=vec[i];if(min>vec[i+1])min=vec[i+1];}else{if(max<vec[i+1])max=vec[i+1];if(min>vec[i])min=vec[i];}}}*p_max=max;*p_min=min;}int main()  {      int a[9]={11,16,22,12,7,22,17,8,200}; int max,min;    vector<int> vec(a,a+9);     show_vec(vec);    find_max_min(vec,&max,&min);     cout<<"max is "<<max<<endl;    cout<<"min is "<<min<<endl;    return 0;  } 


阅读全文
0 0
原创粉丝点击