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; //两子表最小元的小者为原表最小者
        }
    }


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

  • 相关阅读:
    Spark参数优化
    Spark性能优化指南
    Durid的特点
    优秀博客地址
    Kylin的特点
    2017/11/20
    堆、栈、静态存储
    arraylist 和 linkedlist 的区别
    青岛项目遇到的问题
    access specifier
  • 原文地址:https://www.cnblogs.com/Tobyuyu/p/4965374.html
Copyright © 2011-2022 走看看