zoukankan      html  css  js  c++  java
  • 求最大最小元 C++实现 分治法

    采用分治法在一个元素集合中寻找最大元素和最小元素。

    程序实现:

    #include<iostream>
    #include<cstdlib>
    #include<cstdio>
    using namespace std;
    const int N=1000;
    int mini,maxi;
    int l[N];
    
    void maxMin(int i,int j,int &max,int &min);
    
    int main()
    {
        int n;
        cout<<"请输入数组元素个数: ";
        cin>>n;
        cout<<"请输入"<<n<<"个元素:";
        for(int i=0;i<n;i++)
            cin>>l[i];
        maxMin(0,n,maxi,mini);
        cout<<"最大元素: "<<maxi<<endl;
        cout<<"最小元素: "<<mini<<endl;
        return 0;
    }
    
    void maxMin(int i,int j,int &max,int &min)
    {
        int min1,max1;
        if(i==j) max=min=l[i];    //表中只有一个元素时
        else if(i==j-1)           //表中有两个元素时
        if(l[i]<l[j]){
            max=l[j];
            min=l[i];
        }
        else
        {
            max=l[i];
            min=l[j];
        }
        else                      //表中多于两个元素时
        {
            int m=(i+j)/2;        //对半分割
            maxMin(i,m,max,min);  //求前部分子表中的最大、最小值
            maxMin(m+1,j,max1,min1);//求后部分子表中的最大、最小值
            if(max<max1) max=max1; //两子表最大元的大者为原表最大者
            if(min>min1) min=min1; //两子表最小元的小者为原表最小者
        }
    }


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    资源汇总
    最近面试经历
    Screen Space Ambient Occlusion
    实时渲染下的多线程协作:实践
    High Dynamic Range
    Deferred Shading
    实时渲染下的多线程协作
    9.了解四个相等判断的用法
    14.使用构造函数链
    16.垃圾最小化
  • 原文地址:https://www.cnblogs.com/Tobyuyu/p/4965373.html
Copyright © 2011-2022 走看看