Wonder233的学习博客

追赶时间的尾巴

【查找】有序表查找

折半查找:

2018-01-29 17:22:45

阅读数:133

评论数:0

【查找】顺序表(线性表)查找

最基本的查找技术。 算法思想从表中第一个(最后一个)记录开始,逐个进行记录的关键字和给定值比较: 若某个记录的关键字和给定值相等,则查找成功,找到所查记录; 若直到最后一个(或第一个)记录,其关键字和给定值比较都不等时,则表中没有所查的记录,查找不成功。 算法实现function Sequenti...

2018-01-29 16:21:27

阅读数:144

评论数:0

【查找】基本概念与分类

基本概念查找:在数据元素集合中查找是否存在关键字等于某个给定关键字数据元素的过程。 关键字有: 主关键字:能够唯一区分各个不同数据元素的关键字。 次关键字:通常不能唯一区分各个不同数据元素。 分类查找可分为: 静态查找:只在数据元素集合中查找是否存在关键字等于某个给定关键字的数据元素。 动态查找...

2018-01-29 15:59:51

阅读数:89

评论数:0

【排序】归并排序

归并的思想就是将本是无序的数组序列{16,7,13,10,9,15,3,2,5,8,12,1,11,4,6,14}\{16,7,13,10,9,15,3,2,5,8,12,1,11,4,6,14\}通过两两合并排序后再合并,最终获得一个有序的数组。如下图。基本思想二路归并排序: 假设初始序列含有...

2018-01-28 13:21:44

阅读数:77

评论数:0

【排序】选择排序

大顶堆:每个节点的值都大于或等于其左右孩子结点的值。 小顶堆:每个节点的值都小于或等于其左右孩子结点的值。 堆是完全二叉树。 若按照层序遍历的方式给结点从 1 开始编号,则结点之间满足如下关系: {ki≥k2iki≥k2i+1或{ki≤k2iki≤k2i+1,1≤i≤⌊n2⌋\...

2018-01-26 17:02:04

阅读数:79

评论数:0

【排序】插入排序

基本思想 将待排序的数组元素分成多个子序列,使得每个子序列的元素个数相对较少,然后对各个子序列分别进行直接插入排序,待整个待排序列“基本有序”后,最后在对所有元素进行一次直接插入排序。 希尔排序是对直接插入排序算法的优化和升级。 关键 采用跳跃分割的策略:将相距某个“增量”的记录组...

2018-01-25 15:35:51

阅读数:116

评论数:0

【排序】交换排序

定义排序要用到的结构:function List(array){ this.L = array; this.length = array.length; }冒泡排序基本思想两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。算法实现/* 冒泡排序 */ List.pr...

2018-01-25 09:36:18

阅读数:130

评论数:0

【排序】基本概念与分类

定义 假设含有 n" role="presentation" style="position: relative;">nnn 个记录的序列为 {r1,r2,...,rn}" role="presentation"...

2018-01-24 15:27:21

阅读数:93

评论数:0

【图】拓扑排序

定义设 G=(V,{E})G=(V,\{E\}) 是一个具有 nn 个顶点的有向图,VV中的顶点序列 v1,v2,...,vnv_1,v_2,...,v_n 满足若从顶点 viv_i 到 vjv_j 有一条路径,则在顶点序列中顶点 viv_i 必在顶点 vjv_j 之前。则称这样的顶点序列为一个拓...

2018-01-24 11:13:49

阅读数:65

评论数:0

【图】最短路径:弗洛伊德(Floyd)算法

特点弗洛伊德算法是解决任意两点间的最短路径的一种算法,可以正确处理无向图或有向图或负权(但不可存在负权回路)的最短路径问题,同时也被用于计算有向图的传递闭包。基本思想通过 Floyd 算法计算图 G=(V,{E})G=(V,\{E\}) 中各个顶点的最短路径时,需要引入两个矩阵: 矩阵 DD 中的...

2018-01-24 09:56:06

阅读数:97

评论数:0

【图】最短路径:迪杰斯特拉(Dijkstra)算法

网图和非网图中,最短路径的含义不同: 非网图中,因为没有边上的权值,最短路径指的是两顶点之间经过的边数最少的路径; 网图中,最短路径指的是两顶点之间经过的边上权值之和最少的路径,并且称路径上的第一个顶点是源点,最后一个顶点是终点。 迪杰斯特拉(Dijkstra)算法 定义 Di...

2018-01-19 22:10:55

阅读数:200

评论数:0

【图】最小生成树(最小成本):克鲁斯卡尔(Kruskal)算法

给出一个连通网: 克鲁斯卡尔(Kruskal)算法基本思想假设 N=(V,{E})N=(V,\{E\}) 是连通网: 令最小生成树的初始状态为只有 nn 个顶点并且没有边的非连通图 T={V,{}}T=\{V,\{\}\} ,图中每个顶点自成一个连通分量。 在 EE 中选择代价最小的边,若该边的...

2018-01-19 11:09:40

阅读数:178

评论数:0

【图】最小生成树(最小成本):Prim算法

最小成本:nn 个顶点,用 n−1n-1 条边把一个连通图连接起来,并且使得权值的和最小。 最小生成树:构造连通网的最小代价生成树。 根据原来写的博客:【图】图的定义,里面提到一个连通图的生成树是一个极小连通子图,它含有图中全部的顶点,但只有足以构成一棵树的 n−1n-1 条边。 找连通网的...

2018-01-18 21:53:01

阅读数:178

评论数:0

【图】深度优先遍历&广度优先遍历

图的遍历:从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次。因此,为了避免多次访问某一个定点,需要在遍历过程中把访问过得顶点打上标记。具体办法是设置一个访问数组 visited[n]visited[n],初值为 0,访问过后设置为 1。深度优先遍历(Depth_First_Searc...

2018-01-18 17:09:33

阅读数:1146

评论数:0

【二叉树】哈夫曼定理与原理

1、从树中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称作路径的长度。 2、树的路径长度是从树根到每一结点的路径长度之和。 3、树的带权路径长度(WPL)是树中所有叶子结点的带权路径长度之和。 4、带权路径长度 WPL 最小的二叉树称作哈夫曼树。 哈夫曼算法描...

2018-01-16 09:38:54

阅读数:112

评论数:0

【算法】Sunday算法(模式匹配)

背景 Sunday算法是Daniel M.Sunday于1990年提出的字符串模式匹配。相对比较KMP和BM算法而言,简单了许多。 原理 平均性能的时间复杂度为O(n); 最差情况的时间复杂度为O(n * m)。 匹配原理: 从前往后匹配: - 如果遇到不匹配情况判断母串 de...

2018-01-11 18:39:53

阅读数:71

评论数:0

【二叉树】统计成绩出现的次数

编程实现二叉搜索树来记录考试成绩的分布。 解题: 修改 Node 对象, 为其增加一个记录成绩出现频次的成员。function Node(data,left,right){ this.data = data; this.count = 1; this.left = lef...

2017-11-06 11:14:59

阅读数:250

评论数:0

【二叉树】根据二叉树的中序遍历和前序遍历,还原二叉树

已知二叉树的前序遍历和中序遍历: PreOrder: 1 2 4 3 5 6 InOrder: 4 2 1 5 3 6 如何还原这颗二叉树,并求出他的后序遍历?

2017-11-01 15:46:57

阅读数:235

评论数:0

【用JavaScript学算法】最小可用ID

假设我们是用非负整数作为某个系统的ID,所有用户都由一个ID唯一确定。任何时间,这个系统中的有些ID处于使用中的状态,有些ID则可以分配给新用户。问题是,怎样才能找到最小的可分配ID呢? 样例输入:[18, 4, 8, 9, 16, 1, 14, 7, 19, 3, 0, 5, 2, 11, 6...

2017-11-01 09:45:05

阅读数:172

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭