• 分治理法求数组最大值


    如今给出一个n个元素的书组,元素个数n。须要求出最大最小值.

    方法1.

    用max,min。分别记录数组最大最小值,顺序扫描数组,不断替换更新max。min,(max,min的初始值都为数组中的第一个元素)

    方法2.

    1.假设数组中仅仅有一个元素。那么它是最大也是最小值

    2.否则数组中多于一个数。则能够求出左边的最大最小值,右边的最大最小值.然后该区间的最大值是max(lmax,rmax),最小值是min(lmin,rmin)

    详细例如以下(n个数字由随机生成).

    #include <stdio.h>
    #include <time.h>
    int getmax(int a,int b){
            return a>b?a:b;
    }
    int getmin(int a,int b){
            return a<b?

    a:b; } void print(int a[],int n){ int i; for(i=0;i<20;i++) printf("%d ",a[i]); printf(" "); } void maxmin(int a[],int l,int r,int * _max,int * _min){ if(r>l){ int m=(l+r)/2; int _lmin,_rmin,_lmax,_rmax; maxmin(a,l,m,&_lmax,&_lmin); maxmin(a,m+1,r,&_rmax,&_rmin); *_max=getmax(_lmax,_rmax); *_min=getmin(_lmin,_rmin); }else{ *_max=*_min=a[l]; } } int creat(int a[],int n,int m){ int i; srand(time(NULL)); for(i=0;i<n;i++) a[i]=rand()%m-m/2; return n; } int main(){ int n,i; int a[100]; int _min,_max; creat(a,20,100); print(a,20); maxmin(a,0,19,&_max,&_min); printf("max:%d min:%d ",_max,_min); return 0; }

    以下是几次执行的结果.


  • 相关阅读:
    mysql的存储过程
    一份php高级工程师的面试题,我每天看一点点
    php的常用函数(持续更新)
    php 中文字符串截取
    php递归遍历文件目录
    ajax timeout 断网处理
    angular 刷新问题
    angular state中templateUrl 路径的模板
    angular请求传递不了数据
    截取字符串 substring substr slice
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7255488.html
Copyright © 2020-2023  润新知