![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
y_dd
这个作者很懒,什么都没留下…
展开
-
数据结构与算法 二叉树的遍历-非递归
数据结构与算法 树的遍历-非递归 先序遍历 从根出发,首先访问根,不断的访问左分支,直到最深的左分支节点访问完毕。然后转到最底节点的右子树,依次向上访问各右子树,右子树迭代以上过程。(访问方向跟最初的保存的时候相反,使用栈保存每个右子树) 中序遍历 从根出发,沿着左分支下行,直到最深的左分支节点,然后访问它。然后转到右分支,迭代以上过程 template <class T> struct TreeNode { TreeNode(T da):leftchild(NULL), rightc原创 2021-01-03 19:45:25 · 119 阅读 · 0 评论 -
数据结构与算法-栈的应用
逆序输出 输出的次序和处理次序相反,而且递归的深度不容易预知。比如进制转换,括号匹配 //进制转换 void convert(stack<char> &s, int n, int base) { char digit[] = { '0', '1','2', '3','4', '5','6', '7','8', '9','A', 'B','C', 'D','E','F' }; while (n > 0) { s.push(digit[n % base]); n /=..原创 2021-01-02 14:23:57 · 144 阅读 · 0 评论 -
二路归并 c++实现
二路归并 时间复杂度。CBA(基于比较)的排序算法的最好的复杂度是o(nlogn),最坏情况o(n^2) 归并排序的算法即使在最坏情况下复杂度都是O(nlogn) 归并算法是分治策略的应用 1)将待排序序列一分为二,时间o(1) 2)对于划分的子序列,分别递归排序 ----分 2*o(n/2) 3)当子序列分别有序,合并有序子序列 ---治 o(n) T(n) = 2*T(n / 2) + o(n) 这个递推式的结果可以数学方面计算,最终是o(nlogn) [4, 8,68, 8, 32, 7,原创 2020-12-27 19:58:37 · 381 阅读 · 0 评论 -
c++算法-冒泡排序三个版本
c++算法-冒泡排序三个版本 最简版排序,比较N(元素这个数)次,每次交换找出最大值,放到元素的最后的位置 template<typename T> void bubbleSort1(vector<T>& v) { for (int j = 0; j < v.size() - 1; j++) { for (int i = 0; i < v.size() - 1 - j; i++) { if (v[i] >原创 2020-12-03 22:36:50 · 137 阅读 · 0 评论 -
c++算法学习 数组求和的例子来说明减而治之 分而治之-- 学习
c++算法-迭代 减而治之 分而治之 普通迭代法,求解一个n个数组元素的和vector<int> v = { 4, 7, 8, 32, 7,9 }; int sum = 0; for (int i = 0; i < v.size(); i++) { sum += v[i]; } return sum; 时间复杂度T(n) = 1 + n * 1 + 1 = n + 2 = o(n) 这个最普通常见的算法,蕴含了一个算法-减而治之。求解大规模的问题,将其划分为两个子问题,一个是原创 2020-11-22 22:21:03 · 690 阅读 · 0 评论