C++利用vector容器实现最大最小元问题

来源:互联网 发布:怎样修改淘宝卖家地址 编辑:程序博客网 时间:2024/04/30 01:26
//分治法求最大最小元#include"iostream"#include"vector"using namespace std;void MaxMin(int i,int j,int& max1,int& min1,vector<int> l);int main(){    vector<int> v;    int n,temp;    cout<<"input number of digits:";    cin>>n;    cout<<"input "<<n<<" digits:"<<endl;    for(int i=0;i<n;i++){        cin>>temp;        v.push_back(temp);    }    int i=0;    int j=v.size()-1;    int max1=0;    int min1=0;    MaxMin(i,j,max1,min1,v);    cout<<"max="<<max1<<"   min="<<min1;return 0;}void MaxMin(int i,int j,int& max1,int& min1,vector<int> l){    int max2,min2;    if(i==j)max1=min1=l[i];    else if (i==j-1)        if(l[i]<l[j]){            max1=l[j];            min1=l[i];        }        else{            max1=l[i];            min1=l[j];        }    else{        int m=(i+j)/2;        MaxMin(i,m,max1,min1,l);        MaxMin(m+1,j,max2,min2,l);        if(max1<max2) max1=max2;        if(min1>min2) min1=min2;     }}

分析程序可以看出利用vector容器使得灵活性大大提高,可以对任意数量的元素求最大最小元。相同的思路医用C++提供的new、delete方式创建动态数组也可以实现相同的功能,在此就不再赘述了。

0 0
原创粉丝点击