
数据结构(Javascript)
文章平均质量分 50
beimuaihui
只为一个理由
展开
-
算法导论 基本图算法 广度优先搜索
算法导论 基本图算法 广度优先搜索定义图 G=(V,E); 图 G(graph)是由结点 V(vertex)和边 E(edge)组成结点 u.d 表示结点 u 的发现时间(discovery time),u.f 表示结点 u 的结束访问时间(finish time)图的两种表示方法邻接链表(adjacency lists)每个结点 u 都有一个 Adj[u]链表,链表中的元素都是与 u 相连的另一个结点 v,也就是一条边 E邻接矩阵(adjacency matrix)使用原创 2022-04-05 14:22:45 · 417 阅读 · 0 评论 -
算法导论 van Emde Boas 树
算法导论 van Emde Boas 树结构vEB(u)表示全域值为{0,1,2,…,u-1} vEB 树min 表示 vEB 树中最小值,该值元素不出现在任何递归的子树(簇) vEB(u↓\sqrt[\downarrow]{u}↓u)中max 表示 vEB 树中最大值summary 指向 vEB(u↑\sqrt[\uparrow]{u}↑u)新的树,summary[i]表示子树 cluster[i]的逻辑或cluster[0…u↑\sqrt[\uparrow]{u}↑u-1]表示u原创 2022-03-29 12:43:01 · 745 阅读 · 0 评论 -
算法导论 斐波那契堆
算法导论 斐波那契堆定义堆H最小结点min:指向最小关键字key的根结点n表示当前堆中结点的个数结点x最小堆性质:每个结点的关键字key均大于等于父结点的关键字根链表:所有的根结点都通过left,right指针形成一个环形链表父类指针为p,左右兄弟结点为left,right,指向任何一个子结点指针为child,孩子的数目为degree,mark是否失去过孩子操作插入结点:直接在根链表最后插入结点抽取最小结点:将最小结点的子结点最入到根链表中,然后删除最小结点,原创 2022-03-20 21:52:17 · 339 阅读 · 0 评论 -
算法导论第二版=》贪心算法=》赫夫曼编码
使用vscode markdown preview enhance写的文章,生成的html无法复制到编辑器,这编辑器太弱了 源代码:src/samples/algorith/C163Huffman.ts · Bob/LayaAir - Gitee.com原创 2021-11-29 23:54:11 · 258 阅读 · 0 评论 -
算法导论2 贪心算法 活动选择问题
问题 有n个活动S(a1,a2,a3,...,an)要在一个场地举行; 举行活动时各个活动的时间范围内不能有重叠部分,问最多能举行多少个活动(最大活动数)? 活动集体S是按每个活动的结束时间排序的; 自顶向下的递归方法 设f(i,j)为活动 ai 到 aj 的之间(不包含ai,aj)最大活动数;ak 为活动 ai 到 aj 的任意一个活动;则 f(i,j) = f(i,k) + 1 + f(k,j) 当 i>=j;则不能举行任何活动 贪心算法 可举行的第一个活动am一定是 f原创 2021-11-20 22:20:57 · 446 阅读 · 0 评论 -
算法导论2 动态规划 最优二叉查找树
问题 K(1...n) 为有序关键字序列,对于任何一个位置i关键字查找的概率为Pi, 某些搜索字不存在于这些关键字之中,Qj为位于位置 j 与 j+1 之间的概率(搜索字未找到且大于位置为j 的关键字) ;Q0为小于第一个关键字的概率,求如何组织一棵二叉查找树,使得整颗树访问数最小? 自顶向下的递归方法 设f(i,j)为 关键字i 到 关键字j 的最优二叉查找树;w(i,j)为关键字i到关键字j的概率总和;对于之间任何一个位置为k(为根结点)的关键字,则得到公式: f(i,...原创 2021-11-13 10:46:02 · 890 阅读 · 0 评论 -
算法导论2 动态规划 最长公共子序列
问题 有两个字符串X,Y;求这两个字符串顺序相同但不需要连续的最长公共子序列(LCS) 自顶向下的递归算法; 如果X,Y的字符长度为0;则子序列为空; 如果Xi,Yj最后一个字符相同,则LCS = LCS(Xi-1,Yj-1) + 当前X最后一个字符; 如果Xi,Yj最后一个字符不相同,则LCS 等于LCS(Xi-1,Yj)与LCS(Xi,Yj-1)长度更长的那一个序列 自底以上的动态规划 需要一个二维数组result:number[][]存储Xi,Yj的LCS的长.原创 2021-11-07 15:12:23 · 139 阅读 · 0 评论 -
算法导论2 动态规划 动态规划基础 做备忘录( 矩阵链乘法)
问题 同算法导论2 动态规划 矩阵链乘法_beimuaihui的专栏-优快云博客 加了备忘录的自顶向下的递归算法(备忘录动态规划) 将每一个子问题的结果记录在一个备忘录表中;下次再遇到时直接先查备忘录;没有再递归算法 代码 src/samples/algorith/C153MemoizedMatrixChain.ts · Bob/LayaAir - Gitee.com 结果 ...原创 2021-11-06 18:07:52 · 248 阅读 · 0 评论 -
算法导论2 动态规划 矩阵链乘法
问题 有n个矩阵相乘(A1A2A3...An),任何一个矩阵 Ai的维度为Pi-1 *Pi ; 求如何拆分矩阵相乘使得矩阵乘法次数最小 自顶向下的递归方法 对于任何一个子集Ai...Aj ; 如果i==j,则为一个矩阵,乘法次数m(i,j) 为零; 否则从各个索引位置k(i...j )拆分成前后两个子矩阵相乘次数,再加上 Pi-1*Pk*Pj的值;m(i,j) = min(m(i,k) + m(k+1,j) +Pi-1*Pk*Pj) 自底向上的动态规划 需要一个二维数组存储...原创 2021-11-06 12:16:49 · 204 阅读 · 0 评论 -
算法导论2 动态规划 装配线调试
感觉算法不手写出来,体会不了它的实际用处。所以还是继续将算法全部手写出来。要用GUI展示出算法的过程且不能用IDE编辑器(对IDE有恐惧症),用ubuntu命令行安装运行layabox(https://github.com/layabox/layaair),竟然一下就通了,正合我意。 ...原创 2021-11-03 21:45:13 · 200 阅读 · 0 评论 -
链表::循环链表结构插入
http://www.w3.org/TR/html4/strict.dtd"> Untitled Document 向一个循环链表结构插入数据。 function dnode(_code,_name){ this.code=_code; this.name=_name; this.front=null; this.back=null; } fu原创 2008-02-21 19:00:00 · 503 阅读 · 0 评论 -
排序::归并
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">html> head> meta http-equiv="Content-Type" content="text/html; charset=gbk"/> title>Untitled原创 2008-04-26 18:50:00 · 497 阅读 · 0 评论 -
排序:堆排序
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">html> head> meta http-equiv="Content-Type" content="text/html; charset=gbk"/> title>Untitled原创 2008-04-26 18:49:00 · 562 阅读 · 0 评论 -
数据结构 挂牌成立啦
很久没看数据结构啦,真想回归原始社会,用javascript写的。本人由于不会java,只好请个冒牌的来顶替,所有的代码均在winxp+Firefox 2.0 下通过测试。部分程序在IE下运行有点问题。javascript是一个引用传替的深度复制的语言。先来几个函数先 /**//** * @author beimuaihui *//**//** * 计算1到n 的和原创 2007-12-08 20:22:00 · 798 阅读 · 0 评论 -
栈::简介
http://www.w3.org/TR/html4/strict.dtd"> Untitled Document 创建一个栈结构,实现弹出及压入操作。 有两种实现方法,一是数组,一是链表结构。以下内容为用数组实现栈结构 function stack(){ this.item=[]; } function push(stack,str){ va原创 2008-02-21 19:13:00 · 551 阅读 · 0 评论 -
栈::八皇后问题
http://www.w3.org/TR/html4/strict.dtd"> Untitled Document 栈结构中的八皇后问题:在一个n*n的棋盘上放n个皇后,其中同一行,同一列,对角线最多只有一个皇后。 由于它要循环遍历以前的皇后位置,所以用原创 2008-02-21 19:11:00 · 1402 阅读 · 0 评论 -
递归::汉诺塔
http://www.w3.org/TR/html4/strict.dtd"> Untitled Document 汉诺塔问题:假设三个木椿A、B、C,现在木椿A 上有N个盘子, 由上到下依次为1,2,3,4,5...,编号越大,直径也就越大。我们要将圆盘由A通过B全部移动到木椿C上。 移动的递归规律如下: 先将n-1个盘移动到B,然后再将盘n移动到C,再将B上面的盘通过A移动原创 2008-02-21 19:07:00 · 403 阅读 · 0 评论 -
递归:: 八皇后问题
http://www.w3.org/TR/html4/strict.dtd"> Untitled Document 八皇后问题:在一个n*n的棋盘上放n个皇后。 由于每一行最多只能放一个,解决方法是用一个数组,下标表示行,值表示列,索引从0开始。原创 2008-02-21 19:06:00 · 390 阅读 · 0 评论 -
排序:冒泡
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">html> head> meta http-equiv="Content-Type" content="text/html; charset=gbk" /> title>Untitled原创 2008-04-26 18:53:00 · 513 阅读 · 0 评论 -
排序::快速
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">html> head> meta http-equiv="Content-Type" content="text/html; charset=gbk"/> title>Untitled原创 2008-04-26 18:49:00 · 477 阅读 · 0 评论 -
排序::shell排序
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">html> head> meta http-equiv="Content-Type" content="text/html; charset=gbk"/> title>Untitled原创 2008-04-26 18:52:00 · 499 阅读 · 0 评论 -
链表::稀疏数组
http://www.w3.org/TR/html4/strict.dtd"> Untitled Document 使用循环链表结构表示稀疏数组 如下所示为一稀疏数组,用循环链表结构表示。由于数组可以直接从行跟列检索, 所以节点需要两个next节点,分别指向行(right)跟列(原创 2008-02-21 19:05:00 · 699 阅读 · 0 评论 -
排序:选择排序(selection sort)
<br />查询数组中最小的元素,与A[1]交换.然后再查询次最小的数,与A[2]交换.<br /> <br />#include<stdio.h>void selection_sort(int arr[],int cnt){ int init_pos,pos,init_min,i; for(init_pos=0;init_pos<cnt-1;init_pos++) { init_min=arr[init_pos]; pos=init_pos; for(i=init_p原创 2011-02-19 22:52:00 · 569 阅读 · 0 评论 -
查找:二分查找(binary search)
<br />对已经排好的数组进行折半查询.<br /> <br />#include<stdio.h>int search(int arr[],int start,int end,int key){ int pos=(start+end)/2; //no such item:key if(start>end || (start==end && arr[start]!=key)){ return -1; } if(arr[pos]==key){ return pos;原创 2011-02-19 22:47:00 · 558 阅读 · 0 评论 -
排序:查找数组中逆序对的个数
在一个数组A[1-n]中,如果iA[j];则(i,j)称为一个逆序对。如数组{2,3,8,6,1}中,有五个逆序对。分别为{1,5},{2,5},{3,5},{4,5},{3,4}具体参考二版 2-4 中的描述.可以根据合并排序中的算法来做统计.当左边小时,则计数加上右边已经插入 已排好序的个数.就是逆序对.#include#include #includeint get_middle(int s,int e){ return (int)floor((s + e )/2);}in原创 2011-02-19 22:42:00 · 1081 阅读 · 0 评论 -
算法:蛇形填数
/* HELLO.C -- Hello, world */#include "stdio.h"#include "string.h"#define SIZE 3int main(){ int a[SIZE][SIZE]; int x=SIZE-1,y=0,step=1; int i=0,j=0; memset(a,0,sizeof(a)); a[x][y]=1; while(step转载 2010-07-03 18:21:00 · 592 阅读 · 0 评论 -
分治法之归并排序算法
参考了第二版的说明#include#include #includeint get_middle(int s,int e){ return (int)floor((s + e )/2);}void merge_sort(int arr[],int start,int end){ int middle=get_middle(start,end); int l_length=middle - start +1,r_length=end - middle转载 2010-07-04 18:44:00 · 724 阅读 · 0 评论 -
N*N的两维数组,x,y方向的数据 是递增的,查询其中一个数据
曾经看到过 这样的算法题目,感觉比较好玩,就用jquery写了一个算法解决算法是这样的: 首先对于这样的数组,对角线的点fn(x,y)都要大于fn(0,0)到(x-1,y-1)的值且小于(x+1,y+1)到(N,N)值, 所以直接从对角线的左上角向右下角查询,如果没碰到比查询的数据大的,则返回空;如果有,则分成右上角的长方形及左下角的长方形递归查询firefox下的代码如下:原创 2010-06-27 21:36:00 · 706 阅读 · 0 评论 -
MIS通用查询一点想法
首先,这个世界没有完美的功能强大,且界面友好的通用查询功能,否则大家都在用啦。 而且像access的查询,sqlserver的视图我们都很少用,不如直接用sql查询快。 1.简单点,像Mis这种软件,不需要列名,像google一样,只要输入一个关键字,然后所有的列都 like 检索一下,找到匹配的就检索出来 。常用的父类也可以作为查询条件。 2.树型结构。理论上,所有的查原创 2009-06-22 15:29:00 · 579 阅读 · 0 评论 -
链表::链表
http://www.w3.org/TR/html4/strict.dtd"> Untitled Document 链表的连接 function list(nodeId,nodeName){ this.id=nodeId; this.name=nodeName; this.next=null; } function create_list(){原创 2008-02-21 18:58:00 · 1377 阅读 · 1 评论 -
链表::删除循环链表
http://www.w3.org/TR/html4/strict.dtd"> Untitled Document 删除循环链表中的一个节点 function clist(nodeId, nodeName){ this.id原创 2008-02-21 18:57:00 · 587 阅读 · 0 评论 -
数组::矩阵相乘
http://www.w3.org/TR/html4/strict.dtd"> Untitled Document 矩阵乘积问题 设A矩阵为4*2,B矩阵为2*3,如下图所示.求结果矩阵4*3; 01 12 34 56 012 345 结果为: var arrA=[[0,1],[1,2],[3,4],[5,6]]; var arrB=[[0,1,2原创 2008-02-21 18:56:00 · 576 阅读 · 0 评论 -
图::最短路径问题
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">html> head> meta http-equiv="Content-Type" content="text/html; charset=gbk" /> title>Untitled原创 2008-02-21 19:17:00 · 862 阅读 · 0 评论 -
B树::实现
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">html> head> meta http-equiv="Content-Type" content="text/html; charset=gbk"/> title>Untitl原创 2008-02-21 19:16:00 · 1528 阅读 · 0 评论 -
二叉树::表达式的前中后遍历
http://www.w3.org/TR/html4/strict.dtd"> Untitled Document 用二叉树实现表达式的前中后遍历 一个二叉树的子结点又是由二叉树组成的,表达式转的二叉树时,树叶一定是操作数,内部结点一定操作符, 是所以我将字符串分成操作数数组及操作符数组两种情况,优先权高的操作符先结合生成二叉树,左右为数组中的 两个操作数,树根为操作符。完成的原创 2008-02-21 19:16:00 · 909 阅读 · 0 评论 -
队列::数组
http://www.w3.org/TR/html4/strict.dtd"> Untitled Document 用数组表示线性队列 队列是一种先进先出的结构,所以要保留两个位置,一个队头,用来删除数据 一个队尾(rear),用来插入数据。 用数组表示队列常会出现队列数组的开关的索引不为0,我们可以重建索引。 function queue(){ this.ite原创 2008-02-21 19:14:00 · 448 阅读 · 0 评论 -
栈::迷宫问题
http://www.w3.org/TR/html4/strict.dtd"> Untitled Document 迷宫问题(栈实现) 以试错及栈的特性,将当前走过的位置存入栈中,得出当前的四个方向是否有可行时, 存入位置及方向(避免重复走相同的路径)。如此循环。其它部可参考递归中的迷宫算法 /**原创 2008-02-21 19:12:00 · 535 阅读 · 0 评论 -
链表::链表的反转
http://www.w3.org/TR/html4/strict.dtd"> Untitled Document 链表的反转 function list(nodeId, nodeName){ this.id = nodeId; this.name = nodeName;原创 2008-02-21 19:04:00 · 528 阅读 · 0 评论 -
链表::建立循环链表
http://www.w3.org/TR/html4/strict.dtd"> Untitled Document 建立循环链表结构,一个结点即有前一个节点的链接,也有后一节点的链接。 function dnode(_code,_name){ this.code=_code; this.name=_name; this.front=null; this原创 2008-02-21 19:00:00 · 1166 阅读 · 0 评论 -
栈::操作
http://www.w3.org/TR/html4/strict.dtd"> Untitled Document 创建一个栈结构,实现弹出及压入操作。 以下内容为用链表实现栈结构 function stack(str){ this.info=str; this.next=null; } function push(stk,str){ var to原创 2008-02-21 19:13:00 · 482 阅读 · 0 评论