走过路过不要错过,有钱捧个钱场,没钱捧个人场. |

志旋

园龄:4年9个月粉丝:5关注:1

随笔分类 -  算法与数据结构

数据结构-算法思维
摘要:一、贪心算法 1.1 定义 贪婪算法(Greedy)的定义:是一种在每一步选中都采取在当前状态下最好或最优的选择,从而希望 导致结果是全局最好或最优的算法。贪婪算法:当下做局部最优判断,不能回退 1.2 经典问题:部分背包 背包问题是算法的经典问题,分为部分背包和0-1背包,主要区别如下: 部分背包
63
0
0
数据结构-图
摘要:一、概念 图(Graph),是一种复杂的非线性表结构。 图中的元素我们就叫做顶点(vertex) 图中的一个顶点可以与任意其他顶点建立连接关系。我们把这种建立的关系叫做边(edge) 跟顶点相连接的边的条数叫做度(degree) 图这种结构有很广泛的应用,比如社交网络,电子地图,多对多的关系就可以用
48
0
0
数据结构-树
摘要:一、树的概念 有很多数据的逻辑关系并不是线性关系,在实际场景中,常常存在着一对多,甚至是多对多的情况,它是由n(n≥0)个有限节点组成一个具有层次关系的集合 树的分类如下: 二、二叉树 二叉树(binary tree)是树的一种特殊形式。二叉,顾名思义,这种树的每个节点最多有2个孩子节 点。注意,这
47
0
0
插入排序
摘要:算法步骤 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。) 动图演示 代码实现 public void
30
0
0
算法-基数排序
摘要:基数排序 基数排序(Radix Sort)是桶排序的扩展,它的基本思想是:将整数按位数切割成不同的数字,然后按每个位数分别比较。 具体做法是:将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有
41
0
0
算法-计数排序
摘要:计数排序 计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。 [1] 当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(nlog(n))
26
0
0
数据结构-前缀树trie
摘要:前缀树 简介 前缀树是N叉树的一种特殊形式。通常来说,一个前缀树是用来存储字符串的。前缀树的每一个节点代表一个字符串(前缀)。每一个节点会有多个子节点,通往不同子节点的路径上有着不同的字符。子节点代表的字符串是由节点本身的原始字符串,以及通往该子节点路径上所有的字符组成的。 插入 当我们在二叉搜索树
72
0
0
算法-堆排序
摘要:堆排序 先让整个数组都变成大根堆结构,建立堆的过程 从上到下的方法,时间复杂度为O(logN*N) 从下到上的方法,时间复杂度为O(N) 把堆的最大值和堆末尾的值进行交换,然后减少堆的大小之后,再去调整堆,一直周而复始,时间复杂度为O(N) 堆的大小减成0之后,排序完成 图示 代码 其实你会将数据调
56
0
0
算法-选择排序
摘要:算法-选择排序 选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。 算法步骤 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。 再从剩余未排序元素中继续寻找最小(大)元素,
42
0
0
算法-冒泡排序
摘要:冒泡排序 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。 算
35
0
0
算法-归并排序
摘要:归并排序 一、简述 归并排序是将两个或两个以上的有序表组合成一个新的有序表。 其基本思想是: 先将 N 个数据看成 N 个长度为 1 的表,将相邻的表成对合并,得到长度为 2 的 N/2 个有序表,进一步将相邻的合并,得到长度为 4 的 N/4 个有序表,以此类推,直到所有数据均合并成一个长度为 N
105
1
0
点击右上角即可分享
微信分享提示
深色
回顶
收起