算法基础
文章平均质量分 66
傲慢灬
这个人很懒,什么都没有写。(o゜▽゜)o☆
展开
-
常用排序算法
排序算法:内部排序算法大致分为两种:一种是比较排序,时间复杂度最少可达到O(n log n),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。另一种是非比较排序,时间复杂度可以达到O(n),主要有:计数排序,基数排序,桶排序等。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,原创 2017-01-02 21:56:31 · 528 阅读 · 0 评论 -
[LeetCode] 3Sum Closest 最近的三数之和 Python
3Sum Closest:Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input w原创 2017-07-24 16:31:37 · 1383 阅读 · 0 评论 -
[LeetCode] 3Sum 三数之和 Python
刚开始刷题,各方面都觉得很不成熟,总是被Time Limited,特此总结下失败的思维和成功的思维。Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum o原创 2017-07-24 15:24:32 · 3557 阅读 · 1 评论 -
DBSCAN 具有噪声的基于密度的聚类算法简述 附Python代码
DBSCAN DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种很典型的密度聚类算法。基本概念:所需参数:半径:EpsEps半径内指定的数目(阈值):MinPts数据点分为三:1. 核心点:在半径Eps内含有超过MinPts数目的点原创 2017-07-21 15:46:36 · 9193 阅读 · 1 评论 -
AVL树 平衡二叉树 简介及实现原理
平衡二叉树平衡树是计算机科学中的一类数据结构。 平衡树是计算机科学中的一类改进的二叉查找树。在这里,平衡指所有叶子的深度趋于平衡,更广义的是指在树上所有可能查找的均摊复杂度偏低。AVL树AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或转载 2017-01-31 03:24:32 · 1056 阅读 · 0 评论 -
最短路径算法 Dijkstra算法 Floyd算法 简述
Dijkstra算法又称迪杰斯特拉算法,是一个经典的最短路径算法,主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止,使用了广度优先搜索解决赋权有向图的单源最短路径问题,算法最终得到一个最短路径树。时间复杂度为O(N^2)执行动画:实例:抽象步骤:1.将起点A放入集合中,A点的权值为0,因为A->A=0。2.与起点A相连的所有点的权值设原创 2017-01-29 06:22:47 · 31081 阅读 · 8 评论 -
Prim算法 Kruskal算法 简述
Prim算法和Kruskal算法,都是用来找出图中最小生成树的算法,两个算法有些小差别。Prim算法又称普里姆算法,以图上的顶点为出发点,逐次选择到最小生成树顶点集距离最短的顶点为最小生成树的顶点,并加入到该顶点集,直到包含所有的顶点。步骤:1.选择一出发点,加入集合A。2.遍历与集合A中的点相邻的边,找到最短的边,并且不构成回路。3.将步骤2得到的边的目标点加入集合A原创 2017-01-25 06:28:30 · 6456 阅读 · 1 评论 -
赫夫曼树 赫夫曼编码
赫夫曼树又称哈夫曼树,最优二叉树,其本质就是一个带权值的树。它们的带权路径长度分别为:图a: WPL=5*2+7*2+2*2+13*2=54图b: WPL=5*3+2*3+7*2+13*1=48图b为赫夫曼树。构建赫夫曼树:步骤:1,将所有左,右子树都为空的作为根节点。2,在森林中选出两棵根节点的权值最小的树作为一棵新树的左,右子树,且置新树原创 2017-01-22 03:25:58 · 1052 阅读 · 0 评论 -
四则运算表达式 逆波兰表达式
感觉是一块比较偏门的东西,特此记录下:逆波兰表达式:或者叫后缀表达式,我们原先用的一直都是中缀表达式,但是因为如果表达式过长,计算机计算起来不方便。需要先遍历一边,找出其中的()进行优先计算,如果有多个()叠加的话就更麻烦了。于是为了计算机的方便计算,将中缀表达式转换成后缀表达式,计算机便可以使用栈的特性,来快速的计算一个表达式。至于逆波兰表达式这个名字,相传是因为这个波兰人的名字太复杂了原创 2017-01-10 22:56:07 · 1596 阅读 · 0 评论 -
[LeetCode] Trapping Rain Water 三种方案 Python
Trapping Rain Water:Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.For example, Given [0,1,原创 2017-07-25 15:21:38 · 809 阅读 · 0 评论