zoukankan      html  css  js  c++  java
  • MAX_MIN

    代码太烂:不简洁 

     1 #pragma once
     2 /*
     3 事实上,我们只需要最多3 Ln/2」次比较就可以同时找到最小值和最大值。具体的方法是记
     4 录已知的最小值和最大值。但我们并不是将每一个输入元素与当前的最小值和最大值进行比
     5 团丑较这样做的代价是每个元素需要2次比较,而是对输入元素成对地进行处理。首先,我们将
     6 一对输入元素相互进行比较,然后把较小的与当前最小值比较,把较大的与当前最大值进行比
     7 较。这样,对每两个元素共需3 次比较。
     8 如何设定已知的最小值和最大值的初始值依赖千n是奇数还是偶数。如果n是奇数,我们就
     9 将最小值和最大值的初值都设为第一个元素的值,然后成对地处理余下的元素。如果n是偶数,
    10 就对前两个元素做一次比较,以决定最小值和最大值的初值,然后与n是奇数的情形一样,成对
    11 地处理余下的元素。
    12 */
    13 #include<vector>
    14 #include<utility> //pair
    15 
    16 std::pair<int,int>
    17 max_min(const std::vector<int>& A)
    18 {
    19     //奇数
    20     if (A.size() & 1)
    21     {
    22         int max= A[0], min = A[0];
    23         for (int i = 1; i != A.size() - 1;++i)
    24         {
    25             if (A[i] < A[i + 1])
    26             {
    27                 if (A[i] < min)
    28                     min = A[i];
    29                 if (max < A[i + 1])
    30                     max = A[i + 1];
    31             }
    32             else
    33             {
    34                 if (A[i + 1] < min)
    35                     min = A[i + 1];
    36                 if (max < A[i])
    37                     max = A[i];
    38             }
    39         }
    40         return { min,max };
    41     }
    42     //偶数
    43     else
    44     {
    45         int min = A[0],max = A[1];
    46         if (A[1] < A[0])
    47             min = A[1], max = A[0];
    48         for (int i = 2; i != A.size() - 1;++i)
    49         {
    50             if (A[i] < A[i + 1])
    51             {
    52                 if (A[i] < min)
    53                     min = A[i];
    54                 if (max < A[i + 1])
    55                     max = A[i + 1];
    56             }
    57             else
    58             {
    59                 if (A[i + 1] < min)
    60                     min = A[i + 1];
    61                 if (max < A[i])
    62                     max = A[i];
    63             }
    64         }
    65         return { min,max };
    66     }
    67 }
  • 相关阅读:
    《刀塔传奇》
    SSH端口转发
    objective-c与c++的差异
    mysql 远程连接速度慢的解决方案
    maven
    automapper 自动映射 集成asp.net Core2.1
    swagger 集成asp.net Core2.1
    asp.net Core 跨域配置
    处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
    SharedPreferences
  • 原文地址:https://www.cnblogs.com/Z-s-c11/p/13870656.html
Copyright © 2011-2022 走看看