
数据结构常考算法总结
EveryFriDay_ShuJk
这个作者很懒,什么都没留下…
展开
-
回溯法
1、回溯法概念 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 许多复杂的,规模较大...转载 2018-04-21 15:15:48 · 288 阅读 · 0 评论 -
分治法
一、基本概念 在计算机科学中,分治法是一种很重要的算法。分治算法,字面上的解释是“分而治之”,分治算法主要是三点:1.将一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题----“分”2.将最后子问题可以简单的直接求解----“治”3.将所有子问题的解合并起来就是原问题打得解----“合...转载 2018-04-04 16:52:19 · 416 阅读 · 0 评论 -
动态规划算法
通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。1.基本思想 若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。 通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量: 一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题解之时...转载 2018-03-28 21:01:27 · 243 阅读 · 0 评论 -
KMP算法
KMP算法public class KMP{public int kmp_pattern(String T,String P){ if(T == null || P == null || T.length() == 0 || P.length() == 0 || T.length() < P.length()) return -1; int [] ...原创 2018-06-02 11:45:59 · 267 阅读 · 0 评论 -
查找算法
public class Search{ /** *无序表查找:遍历数组 *有序表查找:二分查找,插值查找,斐波拉契查找 *索引查找:分块查找(块间有序,使用二分查找;块内无序,使用顺序查找) * *树的查找:二叉排序树 * *哈希查找: */ /** *有序表查找 */ //...原创 2018-06-02 11:48:29 · 261 阅读 · 0 评论 -
排序算法
public class Sort{ /** *冒泡排序(由小到大) *思路:对于给定的n个记录,从最后一个记录开始依次对相邻的两个记录进行比较,当后面的记录小于前面的记录时,交换位置, *进行一轮比较和换位之后,n个记录中的最小记录位于第1位;然后对后n-1个记录进行第二轮比较;重复该过程直到进行比较的记录只剩下一个为止. */ public void ...原创 2018-06-02 11:49:14 · 297 阅读 · 0 评论