递归(Recursion)算法思想递归算法是一种调用自身函数的算法(二叉树的许多性质在定义上就满足递归)。递归的基本性质就是函数调用,在处理问题的时候,递归往往是把一个大规模的问题不断地变小然后进行推导的过程。 举例:(汉诺塔问题)有三个塔 A、B、C,一开始的时候,在塔 A 上放着 n 个盘子,它 ...
分类:
编程语言 时间:
2020-07-14 00:42:37
阅读次数:
70
引射线法:从目标点出发引一条射线,看这条射线和多边形所有边的交点数射线法时间复杂度:O(n) 适用范围:任意多边形个人认为是非常不错的算法(不需考虑精度误差和多边形点给出的顺序),可以作为第一选择。 算法思想:以被测点Q为端点,向任意方向作射线(一般水平向右作射线),统计该射线与多边形的交点数。如果 ...
分类:
其他好文 时间:
2020-07-10 21:28:36
阅读次数:
76
借鉴博客: https://www.cnblogs.com/Howe-Young/p/4911992.html https://www.cnblogs.com/bianjunting/p/10829212.html 一,定义 权值第 2 小的生成树。 二,Prim 算法 ① 算法思想 1,在最小生成 ...
分类:
其他好文 时间:
2020-07-05 23:29:40
阅读次数:
97
k-means聚类算法原理简介 概要 K-means算法是最普及的聚类算法,也是一个比较简单的聚类算法。 算法接受一个未标记的数据集,然后将数据聚类成不同的组,同时,k-means算法也是一种无监督学习。 算法思想 k-means算法的思想比较简单,假设我们要把数据分成K个类,大概可以分为以下几个步 ...
分类:
编程语言 时间:
2020-07-05 21:01:45
阅读次数:
147
一. 算法思想 二. 代码实现 eg: [ ( [ ] [ ] ) ] 1.栈的括号匹配算法 int MatchBracket()//栈的括号匹配算法 { Stack S=InitStack(); ElemType ch; char arr[8]={'[','(','[',']','[',']',' ...
分类:
其他好文 时间:
2020-07-01 12:46:40
阅读次数:
59
1、归并排序 基本思路:借助额外空间,合并两个有序数组,得到更长的有序数组。例如:「力扣」第 88 题:合并两个有序数组。 算法思想:分而治之(分治思想)。「分而治之」思想的形象理解是「曹冲称象」、MapReduce,在一定情况下可以并行化。 public class Solution { // 归 ...
分类:
编程语言 时间:
2020-06-28 18:15:49
阅读次数:
60
一个比较高质量的参考语雀网站 https://www.yuque.com/angsweet/machine-learning/jian-jie 线代高数概率论高数,微积分,线代,概率论,运筹学(优化) 微积分、线性代数、概率与统计、矩阵和数值分析、优化方法线代,微积分,概率论,数理统计,一些算法思想 ...
分类:
其他好文 时间:
2020-06-27 11:57:41
阅读次数:
99
一. 简单的直接算法 比较次数:(n-m-1)*m次 时间复杂度O(mn) 二. Rabin-karp算法 算法思想:将字符串转化成数字进行粗比较,筛选后进行细比较 算法设计: (1)直接数值比较 算法思想:字符集与 1-n 的数值满足双射,字符串转化为n进制数值 优化程度:a. 比较次数:n-m次 ...
分类:
编程语言 时间:
2020-06-25 18:00:36
阅读次数:
68
Dijkstra算法算是贪心思想实现的,首先把起点到所有点的距离存下来找个最短的,然后松弛一次再找出最短的,所谓的松弛操作就是,遍历一遍看通过刚刚找到的距离最短的点作为中转站会不会更近,如果更近了就更新距离,这样把所有的点找遍之后就存下了起点到其他所有点的最短距离。(贪心算法每次都找到最优解,不回退 ...
分类:
编程语言 时间:
2020-06-25 12:21:33
阅读次数:
58
一. 算法思想 在使用best-first的搜索策略时,有时可以得到最优解,有时无法得到最优解,因此best-first只能较快的解决可行解问题。 A*算法是 重新定义代价函数,使得best-first搜索策略可以得到优化解的算法 A*算法(Best-first + 特殊代价函数~> 优化解) a. ...
分类:
编程语言 时间:
2020-06-24 16:05:09
阅读次数:
50