- 博客(6)
- 收藏
- 关注
原创 算法之分治和构造
原理:分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。即一种分目标完成程序算法,简单问题可用二分法完成。分治法求解步骤(1)分解,将要解决的问题划分成若干规模较小的同类问题;(2)求解,当子问题划分得足够小时,用较简单的方法解决;(3)合并,按原问题的要求,将子问题的解逐层合并构成原问题的
2018-02-01 23:41:36 377
原创 算法之动态规划
动态规划算法思想原理:动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是初始问题的解。适用情况:能采用动态规划求解的问题的一般要具有3个性质:(1)
2018-02-01 23:20:28 206
原创 算法之枚举和贪心
枚举(亦称穷举)算法原理:枚举法的本质就是从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件:(1)可预先确定候选答案的数量;(2)候选答案的范围在求解之前必须有一个确定的集合。核心思想:枚举所有的可能。枚举算法简单粗暴,他暴力的枚举所有可能,尽可能地尝试所有的方法。虽然枚举算法非常暴力,而且速度可能很慢,但确实我们最应该优先考虑的!因为枚举法变成实现最简单,并且得到的结果总是
2018-02-01 22:52:40 2105
原创 数据结构之二叉树的遍历方法
二叉树的遍历方式前序遍历:先(根)序遍历的递归算法定义:若二叉树非空,则依次执行如下操作:⑴ 访问根结点;⑵ 遍历左子树;⑶ 遍历右子树。递归代码实现procedure first(i:longint); begin write(a[i]); ifa[i*2]<>0then first(i*2); ifa[i*2+1]<>0then firs
2018-02-01 01:23:34 186
原创 数据结构之二叉搜索树
二叉搜索树:二叉查找树又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。为了便于理解,这里上两张图代码实现:struct BiTree { int data; BiTree
2018-02-01 01:12:08 183
原创 数据结构之排序算法总结
排序种类及相应思想①冒泡排序:冒泡排序算法的运作如下:(从后往前)比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。②选择排序:它的工作原理是每一次从待排序的数据元素中选出
2018-02-01 00:56:45 185
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人