求最大最小值的O(3n/2)算法

《算法导论》上面第九章开章的算法,简单。貌似《编程之美》上面也有。

#include <vector> #include <ctime> //time(0) #include <cstdlib> //rand() #include <iostream> using namespace std; const int MAX_VECTOR_SIZE = 10; int main() { vector<int> iVec; /*生成随机的一组数*/ srand((unsigned)time(0)); //设置rand的seed种子 for(int i = 0; i < MAX_VECTOR_SIZE; i++) { int ran_num = rand() % MAX_VECTOR_SIZE; iVec.push_back(ran_num); } cout << "iVec num: "; for(vector<int>::iterator iter = iVec.begin(); iter != iVec.end(); iter++) { cout << *iter << " "; } cout << endl; cout << "iVec size: " << iVec.size() << endl; /*该程序设定某组数的个数为偶数*/ int min, max; min = iVec[0] < iVec[1] ? iVec[0] : iVec[1]; max = iVec[0] < iVec[1] ? iVec[1] : iVec[0]; int minTemp, maxTemp; for(vector<int>::size_type i = 2, j = 3; i != iVec.size() - 1; i++, j++) { /*先对一对数进行比较,得到较大和较小的数*/ if(iVec[i] < iVec[j]) { minTemp = iVec[i]; maxTemp = iVec[j]; } else { minTemp = iVec[j]; maxTemp = iVec[i]; } /*接着进行两次比较,分别与当前最小和最大的数进行比较*/ if(minTemp < min) min = minTemp; if(maxTemp > max) max = maxTemp; } cout << "min : " << min << endl; cout << "max : " << max << endl; return 0; }

运行结果:

求最大最小值的O(3n/2)算法_第1张图片

你可能感兴趣的:(编程,算法,vector,iterator)