自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SanFancsgo的博客

业精于勤荒于嬉,行成于思毁于随。

  • 博客(24)
  • 资源 (2)
  • 收藏
  • 关注

原创 伸展树及相关操作

伸展树简要提点伸展树(Splay Tree)是一种二叉排序树,能在O(log n)内完成插入、查找和删除操作。伸展树的基本操作都和伸展有关:当带有关键字X的节点被插入时,需要对树进行一系列的伸展旋转使得关键字X的节点成为新的根节点。当查找一个关键字X时,也同样对树进行伸展旋转使得带有关键字X的节点成为根节点。这样下次再查找X时,只需O(1)的时间。伸展树的数据结构使得访问频繁的关...

2018-06-30 21:22:38 1000

原创 回溯算法之收费公路重建问题

收费公路重建问题设给定N个点p1,p2,...,pNp1,p2,...,pNp_1, p_2,..., p_N位于x轴上,xixix_i为pipip_i的坐标,假设x1=0x1=0x_1=0且这些点从左至右分布。则每一对点之间都对应一个距离|xi,xj|, (i≠j)|xi,xj|, (i≠j)|x_i, x_j|, \ (i \neq j),共计有N(N-1)/2对点产生...

2018-06-29 14:53:25 3534 1

原创 动态规划求图中所有顶点对的最短路径

动态规划求所有点对最短路径问题描述应用动态规划算法求有向图G=(V,E)G=(V,E)G=(V,E)中每一对顶点的赋权最短路径。从Dijkstra算法中思考Dijkstra算法采用贪心的策略,指定从顶点s开始分阶段进行。图中的每个顶点最终都会被选作中间顶点。如果当前所选顶点是vvv,那么对于vvv的每个邻接点www,dw=min(dw,dv+cv,w)dw=min(dw,d...

2018-06-28 21:20:36 5067 2

原创 斐波那契数的递归算法和动态规划算法

斐波那契数1,1,2,3,5,8,13,21….从第3个数开始,每个数等于它前面的两个数之和。斐波那契公式为: {F(0)=F(1)=0F(n)=F(n−1)+F(n−2)  n≥3{F(0)=F(1)=0F(n)=F(n−1)+F(n−2)  n≥3\left\{ \begin{aligned} & F(0)=F(1)=0 \\ & F(n) =...

2018-06-27 22:10:35 2652

原创 图的深度优先遍历

深度优先遍历和树的先根遍历类似。指定从一个顶点v开始访问,并用一个状态表来记录顶点是否被访问。当v被访问时,标记被访问。当其邻接点未访问时,递归地访问其邻接点以及邻接点的邻接点……直到所有顶点都被访问。例如,上图从顶点v0v0v_0开始,深度优先遍历图的结果为:v0→v1→v3→v2→v5→v6→v4v0→v1→v3→v2→v5→v6→v4v_0 \to v_1 \to v_...

2018-06-27 20:35:01 546

原创 图的最小生成树之Prim算法及Kruskal算法

最小生成树定义:无向图连通图G中,由所有顶点构成且总价值(连接权值和)最低的一棵树(拓扑结构)称为一个最小生成树。最小生成树顶点为|V|个,边数为|V|-1,没有圈。对任一生成树T,如果将图中一条不属于T的边添加至T,则会产生一个圈,从该圈中除去任意一条边,则会又恢复成生成树。下图为一示例: 对于上面的无向有权连通图,其最小生成树为: 解决最小生成树问题有两种算法Prim算法和...

2018-06-27 16:58:32 5047 1

原创 图的有权最短路径及Dijkstra算法

图的有权最短路径和有向无权图不同的是,有向有权图相邻两个顶点间的边上被赋予一个连接权值。有权最短路径就是寻找一条路径使得该路径上的权值相加与其他路径相比最小。例如: 上图,顶点v0v0v_0和v5v5v_5之间存在多条路径,如v0→v3→v5v0→v3→v5v_0 \to v_3 \to v_5、v0→v3→v6→v5v0→v3→v6→v5v_0 \to v_3 \to v_6 \t...

2018-06-24 20:19:47 5347 1

原创 图的无权最短路径算法

无权最短路径对于无权图G(边没有权值或认为权值为1),如果G是连通的,则每个顶点之间都存在路径。最短路径算法就是要找到一条连接不同顶点的最短路径。上图表示一个有向无权图,顶点v2v2v_2到V6V6V_6之间存在多条路径如v2→v0→v1→v4→v6v2→v0→v1→v4→v6v_2 \to v_0 \to v_1 \to v_4 \to v_6为其中的1条,而最短的一条路径为...

2018-06-23 21:15:52 8329

原创 图的邻接表表示及拓扑排序

图的定义图(graph)G=(V, E)G=(V, E)G=(V,\ E),由顶点(vertex)集VVV和边(edge)集EEE组成。每条边为一个点对(v, w)(v, w)(v,\ w)。图的表示① 邻接矩阵表示法:使用一个二维数组A,对每条边(u, v), A[u][v]=1;否则为0。总空间大小为O(|v|2)O(|v|2)O(|v...

2018-06-22 11:53:56 2711

原创 排序算法综合实例

插入排序思想:从数组第二个元素开始,每次选取一个作为待排元素,与已排好的元素依次比较。如果待排元素比已排元素小,则已排元素依次后移。最后把待排元素插入到合适的位置。插入排序的平均复杂度为O(n2)O(n2)O(n^2)。插入排序函数模板template<typename T>void InsertSort(T* list, int n) // 选择排序函数的实...

2018-06-21 13:20:41 2672 1

原创 左式堆及相关操作

左式堆左式堆同样是一种堆结构满足堆序性质。左式堆是一种趋向不平衡的二叉树。零路径长(Null Path Length, NPL):节点X到一个没有两个孩子的最短路径长。具有0个或1个孩子的节点的NPL为0,空节点NPL为-1。任一节点的NPL比它孩子的NPL的最小值多1。且其左孩子的NPL大于或等于右孩子的NPL,这使得树偏向左增加深度。在右路径上有r个节点的左式树必然至少有2r−1...

2018-06-20 20:20:49 369

原创 优先队列(堆)及相关操作

二叉堆(堆)堆是一颗完全二叉树:除了底层每个节点都有两个孩子,底层节点从左到右依次填入(不能有间隔)。一颗高为hhh的完全二叉树有2h∼2h+1−12h∼2h+1−12^{h}\sim 2^{h+1}-1个节点;NNN的节点的完全二叉树的高度为⌊logN⌋⌊log⁡N⌋\lfloor \log N \rfloor。堆可以用数组实现:如果数组下标从1开始,每个位置iii的左孩子下标为2i2...

2018-06-20 19:26:58 433

原创 散列之开放定址法

开放定址散列法分离链表法缺点:需要指针,给新单元分配地址需要时间,导致算法速度减慢,同时还需要实现另一种数据结构。开放定址法:如果有冲突发生,尝试选择另外得单元,直到找出空的单元为止。开放定址散列法数据结构散列表单元不是链表,而是一个个散列项:包含关键字和相关信息(是否为空),数据结构声明如下:typedef struct Entry { // 定义哈希表元...

2018-06-20 15:54:25 1017

原创 散列与分离链表法

散列散列(hashing)是一种数据结构:包含有关键字的固定大小的数组(散列表)。能够以常数平均时间执行插入、删除和查找操作。散列函数(hash function):将每个关键字到散列表中的映射,理想情况下应该能保证不同关键字映射到散列表的不同单元。一个简单的散列函数Index Hash(const char *key, int TableSize){ unsign...

2018-06-20 15:17:52 1667

原创 AVL树及相关操作

AVL树定义AVL树是带有平衡条件的二叉搜索树。对于NNN个节点的AVL树,其深度必然为O(logN)O(log⁡N)O(\log N)一颗AVL树其每个节点的左子树和右子树的高度最多相差1(空树的高度定义为-1)。AVL树的旋转保证AVL树平衡的关键是插入元素过程中的旋转调整。旋转分四种情况:单左旋,单右旋,双左旋及双右旋。1.单左旋:插入某个元素之后,某个结点...

2018-06-19 16:17:57 366

原创 二叉树的非递归遍历:先根遍历、中根遍历、后根遍历

二叉树的非递归遍历二叉树的三种遍历方式也可以通过非递归的方法借助栈来实现。通过控制节点的出栈和入栈先后顺序来实现对树的不同方式的遍历。非递归先根遍历二叉树当栈不为空或者当前节点为不为空,执行操作:从根节点开始,依次访问树中最左端的节点并入栈,当节点为空停止入栈。取栈顶元素为当前节点并出栈,如果当前节点有右子树,则遍历其右子树。void PreorderPrint(...

2018-06-19 14:00:05 7906

原创 二叉搜索树及其相关操作

二叉搜索树简要提点二叉树(binary tree)是一种树型数据结构,其中它的每个节点最多有两个孩子(可以没有,也可以只有一个)。二叉搜索树(binary search tree)是一种特殊的二叉树,对每个节点,其左孩子/左子树的关键字值该节点的关键字值;其右孩子/右子树的关键字值都大于该节点的关键字值。二叉搜索树的平均深度为O(logN)O(log⁡N)O(\log N)。其中,NNN...

2018-06-19 12:43:46 270

原创 循环队列及其相关操作

循环队列简要提点解决队列操作过程中不断出队和入队导致的队满的”假象”(即队尾rear==Maxsize,而队首却不是0)。当队列”假满”时,引入循环,队尾和队首到达数组尾端,又会重新绕回开头。可以把循环队列的存储形象地看成一个“圆环”。循环队列的主要操作有:入队(Enqueue)、出队(Dequeue)、判断队是否空、满。循环队列的数组实现基本数据结构:队首fron...

2018-06-14 21:11:10 411

原创 队列及其相关操作

队列的简要提点队列(queue)是一种先进先出(FIFO, first in first out)的表。有队首和队尾,队尾进(插入)元素,队首出(删除)元素。队列的基本操作主要有:入队(Enqueue)、出队(Dequeue)。队列的实现方式也有两种:基于链表和基于数组。队列的数组实现基本的数据结构:存放元素的数组elemList,表示队首位置的front,表示队尾位置的...

2018-06-14 20:49:11 182

原创 栈及其相关操作

栈简要提点栈(stack)是一个后进先出(LIFO, last in first out)的表,限制在栈顶位置对元素插入和删除。栈的基本操作主要有:Push(进栈)、Pop(出栈)。栈主要有两种实现方式:链表和数组。栈的链表实现说明:利用带头指针的单链表实现:指定头指针为栈顶,入栈和出栈操作头指针及其后面的元素。代码实现(C/C++)#include<...

2018-06-14 20:09:13 225

原创 双链表及其相关操作(C++)

C++代码实现#include<iostream>using namespace std;typedef struct Node { // 定义结点 int date; struct Node *prior, *next;}DNode, *DLinkList;DLinkList initDList() // 初始化链表{ DLi...

2018-06-06 15:21:19 209

原创 单链表及其相关操作(C++)

C++代码实现#include<iostream>using namespace std;typedef struct Node{ // 定义结点 int date; struct Node *next;}LNode, *LinkList; LinkList initList() // 初始化链表{ LinkList head ...

2018-06-06 13:43:05 167

原创 线性表的初始化及插入元素操作

C语言实现#include<stdio.h>#include<malloc.h>#include<stdlib.h>#define LIST_INIT_SIZE 100 // 初始分配空间typedef struct { int *elemList; // 定义int类型指针指向数组,elem为数组首元素地址 i...

2018-06-06 13:35:04 6418 1

原创 最大子段和问题:蛮力、递归及动态规划

问题描述求一个序列的最大子段和即最大连续子序列之和。例如序列[4, -3, 5, -2, -1, 2, 6, -2]的最大子段和为11=[4+(-3)+5+(-2)+(-1)+(2)+(6)]。1. 蛮力算法思想:从序列首元素开始穷举所有可能的子序列。代码示例(C++):#include<iostream>using namespace std;int...

2018-06-05 18:10:10 43645 15

StumbleUpon Evergreen 数据集

StumbleUpon Evergreen数据,来源于Kaggle中的一个题目StumbleUpon Evergreen Classification Challenge。 StumbleUpon 是一个个性化推荐引擎,根据用户的兴趣行为给用户推荐网页,而有些网页内容是即时性(ephemeral)的,比如新闻股票网页(用户短暂感兴趣),有些网页是长久性的(evergreen)如体育,理财等(用户持续感兴趣)。现要分辨网页是ephemeral的还是evergreen的,以便向用户推荐更加准确的网页。 这是一个二分类问题。 查看StumbleUpon数据的详细信息:https:www.kaggle.com/c/stumbleupon/data

2018-09-10

用于构造决策树的小数据集

数据挖掘概念与技术课本P218页数据表格式为.csv。。决策树一般采用贪心策略**自顶向下**递归的分治方式构造,从训练元组集和与之相关联的类标号开始,随着树的构建,训练集递归地划分成较小的子集。构造过程大致如下: 1. 构造**根结点**,根据**属性选择度量**(例如ID3的信息增益)来选择合适的属性作为根结点。 2. 根据根结点的属性值(可能是离散的,连续的或二值的)**分枝**,每个分枝代表元组在该属性下可能满足的条件。

2018-04-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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