- 博客(8)
- 资源 (9)
- 收藏
- 关注
原创 判断单链表是否存在环以及求出环的入口
问题描述: 给定一个单链表,判断是否存在环。 求解思路:给两个速度不一样的指针,进入一个循环,查看二者是否相等。 算法代码: bool Is_has_loop(link_list *head) { if(head == NULL) return; link_list *fast,*slow; fast = slow = head;
2015-06-20 16:05:55 702
原创 回溯法求最佳调度(简易实现)
一、算法描述 voidBackTrace(intk)//回溯算法描述 { if(k>number) { for(inti=1;i { bestOrder[i]=xOrder[i]; } bestValue=xValue; } e
2015-06-06 16:24:53 1781
原创 哈夫曼编码
一、 伪代码 HUFFMAN(C) N=|C|; Q=C; for i=1 to n-1 allocate a new node z z.left=x=EXTRACT-MIN(Q); z.right=y= EXTRACT-MIN(Q); z.freq=x.freq+y.freq; INSERT(Q,z); return EXTRACT-MIN(Q); 二、算法分析
2015-06-06 16:24:02 2990 1
原创 动态规划求最长公共子序列
一、 伪代码 LCS_LENGTH(X,Y); 1. begin 2. m:=length[X]; 3. n:=length[Y]; 4. for i:=1 to m do c[i,0]:=0; 5. for j:=1 to n do c[0,j]:=0; 6. for i:=1 to m do 7. for j:=1 to
2015-06-06 16:17:52 1373
原创 分治法求平面上的最小点对
一、 算法描述: 设S中的点为平面上的点,它们都有2个坐标值x和y。为了将平面上点集S线性分割为大小大致相等的2个子集S1和S2,我们选取一垂直线l:x=m来作为分割直线。其中m为S中各点x坐标的中位数。由此将S分割为S1={p∈S|px≤m}和S2={p∈S|px>m}。从而使S1和S2分别位于直线l的左侧和右侧,且S=S1∪S2 。由于m是S中各点x坐标值的中位数,因此S1和S2中的
2015-06-06 16:09:07 2810
原创 区间树查找
一、算法的分析 1、基本概念: 区间:一个事件占用的时间 闭区间:实数的有序对[t1,t2],使t1≤t2 区间的对象表示:[t1,t2]可以用对象i表示,有两个属性: low[i]=t1//起点或低点 high[i]=t2//终点或高点 区间的重叠:i∩i’≠Ø ⇔(low[i]≤high[i’]) and (low[i’]≤high[i]) 2、数据结构:本质上是将红黑树扩充,
2015-06-06 16:06:05 695
原创 红黑树的插入
一、算法的分析 Step1:将A结点按BST树规则插入红黑树中,Z是叶子节点; Step2:将Z涂红; Step3:调整使其满足红黑树的性质; BRTnsert算法 RBInsert(T, z) { y ← nil[T]; //y用于记录:当前扫描节点的双亲节点 x ← root[T]; //从根开始扫描 while x ≠ nil[T] do //查找插入
2015-06-06 16:05:39 554
原创 快速排序
一、伪代码(快速排序) QUICKSORT(A, p, r) 1 if p 2 then q ← PARTITION(A, p, r) 3 QUICKSORT(A, p, q - 1) 4 QUICKSORT(A, q + 1, r) PARTITION(A, p, r)1 x ← A[r] 2 i ← p
2015-06-06 15:44:13 578
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人