zoukankan      html  css  js  c++  java
  • 编程之美 寻找数组中的最大值和最小值

    寻找一个数组里的最大值和最小值

    法一:

           分别遍历一遍,次数O(2*N);

    法二:

            根据书上的讲述,

     

    法三:

           主要在法二的基础上改进,法二改变了原数组,法三主要是不改变原数组,定义两个变量MAX和MIN,分别保存最大值和最小值。

    法四:

           分治法,这是重点。

    typedef struct
    {
      int MAX;
      int MIN;
    } iValueType;
    
    iValueType search(int* arr,int m,int n)
    {
       if(n-m<=1) 
       {
         iValueType tmp;
    	 if(arr[n]>arr[m])
    	 {
    		 tmp.MAX=arr[n];
    		 tmp.MIN=arr[m];	 
    	 }
    	 else
    	 {
    		 tmp.MAX=arr[m];
    		 tmp.MIN=arr[n];
    	 }
    	 return tmp;
       }
    
     iValueType leftValue=search(arr,m,m+(n-m)/2);
     iValueType rightValue=search(arr,m+(n-m)/2+1,n);
     
     iValueType tmp;
     if(leftValue.MAX>rightValue.MAX)
    	 tmp.MAX=leftValue.MAX;
     else
    	 tmp.MAX=rightValue.MAX;
    
    
     if(leftValue.MIN>rightValue.MIN)
    	 tmp.MIN=rightValue.MIN;
     else
    	 tmp.MIN=leftValue.MIN;
      
    return tmp;
    }


    复杂度 1.5N

    推导见书上:





           

  • 相关阅读:
    连接数据库修改篇
    连接数据库
    get和post
    php连接mysql
    AJAX基础!
    JAVAsrcipt总结!
    使用AJAX如何得到数据库当中的值!
    AJAX如何做出输入框提示!
    PHP数据连接主键与外键!
    JAVA当中内存管理与垃圾回收!
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3190366.html
Copyright © 2011-2022 走看看