基础算法(1):最值(最大值,最小值,同时求最大值和最小值)

来源:互联网 发布:软件助手下载 编辑:程序博客网 时间:2024/05/20 20:20

一.寻找最小值和最大值。

        方法: 遍历一遍元素集合,获得最值。

                 最小值: 

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. void findMin(const vector<int> &num, int &min)  
  2. {  
  3.     min = num[0];  
  4.     vector<int>::const_iterator iter;  
  5.     /*常量引用使用 const_iterator; 非常量使用 iterator*/  
  6.     for (iter = num.begin(); iter != num.end(); ++iter)  
  7.     {  
  8.         if (*iter < min)  
  9.             min = *iter;  
  10.     }  
  11. }  

                  最大值:             

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. void findMax(const vector<int> &num, int &max)  
  2. {  
  3.     max = num[0];  
  4.     vector<int>::const_iterator iter;  
  5.     /*常量引用使用 const_iterator; 非常量使用 iterator*/  
  6.     for (iter = num.begin() + 1; iter != num.end(); ++iter)  
  7.     {  
  8.         if (*iter > max)  
  9.             max = *iter;  
  10.     }  
  11. }  

二.同时寻找最小值和最大值。

     方法:

            1.一般方法, 遍历元素分别与最小值和最大值比较。共需要比较2n-2次。

            2.优化方法, 每次读入两个元素,先比较这两个元素的大小,然后把大的与最大值比较,

                               小的与最小值比较。

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. void findMinAndMax(const vector<int> &num, int &min, int &max)  
  2. {  
  3.     if (num.size() == 1)  
  4.     {  
  5.         max = min = num[0];  
  6.     }  
  7.     else  
  8.     {  
  9.         num[0] >= num[1] ? max = num[0], min = num[1] :  
  10.                        max = num[1], min = num[0];  
  11.         vector<int>::const_iterator iter;  
  12.         for (iter = num.begin() + 1; iter + 1 != num.end(); ++iter)  
  13.         {  
  14.             if (*iter >= *(iter + 1))  
  15.             {  
  16.                 if (*iter > max) max = *iter;  
  17.                 if (*(iter + 1) < min) min = *(iter + 1);  
  18.             }  
  19.             else  
  20.             {  
  21.                 if (*(iter + 1) > max) max = *(iter + 1);  
  22.                 if (*iter < min) min = *iter;  
  23.             }  
  24.         }  
  25.     }  
  26. }  
0 0
原创粉丝点击