数据结构与算法分析c++:算法分析
2017-11-07 16:09
295 查看
最大子序列和问题
//相比于其他三种算法,这种算法剔除了多余的循环部分, //运行时间是明显缩减的,但其正确性却不是那么明显, //需要正式的正确性证明。 #include <vector> int maxSubSum(const std::vector<int> &a) { int maxSum = 0; int thisSum = 0; for (int j = 0; j < a.size(); j++) { //代码的精髓部分就在于此,若a[j]小于零, //那它就无法作为子序列的起点,而一旦thisSum小于零, //它自然也无法成为子序列的前缀子序列,遍历后我们不会 //漏掉最优解; thisSum += a[j]; if (thisSum > maxSum) { maxSum = thisSum; } else if (thisSum < 0) { thisSum = 0; } } return maxSum; }
二分搜索(binary search)
给定一个整数X,和整数A0,A1,A2,…,An-1,后者已经预先排序并在内存中,求下标i是的X=Ai,如果X不在序列中,返回i=-1.
#include <vector> int binarySearch(const std::vector<int> &a, const int x) { int low = 0; int high = a.size()-1; while (low < high) { int mid = (low + high) / 2; if (a[mid] < x) { low = mid + 1; } else if (a[mid] > x) { high = mid - 1; } else { return mid; } } return -1; }
欧几里得算法
计算两个整数的最大公因数(The greatest common factor)long gcd(long m, long n) { while (n != 0) { long rem = m%n; //若m<n,则第一次实现mn交换 m = n; n = rem; } return m; }
相关文章推荐
- 数据结构与算法分析c++:算法分析
- <数据结构与算法分析 C++描述>算法分析之最大子序列和问题
- C++与matlab混合编程基于主成份分析算法的数值分析
- C++版本二分算法分析总结
- C++STL算法分析之:变易算法
- 从零开始学C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)
- 数据结构与算法分析:C++描述(Mark Allen Weiss) 和 数据结构(刘大有)笔记
- C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)
- 常用数值分析算法(c++)
- 00数据结构与算法分析_02算法分析(三)
- 杭电ACM 2015 偶数求和 算法分析详解 C++实现
- [C++]数据结构:算法分析之八皇后问题
- 算法设计、分析与实现 从入门到精通 C、C++和Java 这本书的堆实现85页C++语言实现有问题
- C++与matlab混合编程基于主成份分析算法的数值分析(二)
- 浅谈数据结构与算法分析学习及如何进行算法分析
- C++之STL(六):变动性算法源代码分析与使用示例(copy_backward、 transform、 replace_copy_if 等)
- 数据结构与算法分析之c++STL的vector特点分析
- 数据结构与算法分析再读之引论和算法分析
- 从零开始学C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)
- 【数据结构与算法分析——C语言描述】第二章总结 算法分析