数据结构 & 算法
文章平均质量分 74
数据结构 & 算法
PeersLee
但行好事,莫问前程;慎终如始,则无败事;任重道远,不忘初心。
展开
-
poj1182->食物连->并查集
poj1182 食物链思路来源,但是有所不同,详细异同点代码中有注释。并查集小结:并查集算法主要是根据元素之间的关系去快速查询(Query ),我们在将元素加入(Merge )我们的并查集中时要实时的更新关系函数(Relation 数组),弄清楚谁是谁的父节点(GetPar),谁是谁们的根节点(Parent 数组)。#includeusing namespace std原创 2015-09-02 23:42:02 · 386 阅读 · 0 评论 -
数据结构 — 图 之 关键路径、关键活动 (文字表述)
1、AOE网:边表示活动的网络,边表示活动,顶点表示事件,当该事件发生了,就说明触发该事件发生的所有的活动已经完成。一个工程所需的最短时间 就是 完成从开始顶点到终止顶点的最长路径的长度。2、关键路径:关键路径就是从开始顶点到结束顶点之间 一条具有最长路径长度的路径。关键路径可能不止一条。3、活动的early(i):一个事件(顶点vi)的最早发生时间 -> 最长原创 2015-11-26 22:37:44 · 4256 阅读 · 0 评论 -
数据结构 — 归并排序
一、归并排序算法1、归并:将两个以上的顺序表合并成一个新的有序表。2、归并排序:假设有n个记录,看成n个有序序列(每个序列的长度是1),将其两两有序合并成 n/2 个含有两个或者一个元素的有序序列,之后不断重复合并这个动作,直至合并成一个含有n个元素的有序序列。(引用大话数据结构中的排序树)二、递归实现三、非递归实现原创 2015-12-19 20:45:13 · 3074 阅读 · 0 评论 -
数据结构 — 堆排序
1、堆排序的时间复杂度与归并排序相同,O(nlogn)。堆排序的优势在与他只需要固定数量的额外空间,堆排序要比空间复杂性为O(n)的归并排序稍微慢一些,但是比空间复杂性为O(1)的归并排序要快。2、对序列(26, 5, 77, 1, 61, 11, 59, 15, 48, 19)进行堆排序过程:代码:#includeusin原创 2015-12-20 13:14:31 · 2734 阅读 · 0 评论 -
数据结构 — 查找(最基础)
/*1.顺序查找 平均比较次数:(n+1)/22.折半查找 由判定树得出平均比较次数不会超过O(logn)*/#includeusing namespace std;#define MAX_NUM 5typedef struct { int key;}EleType;/*顺序查找*/int seqsearch(EleType arr[], int searchNum原创 2015-12-06 22:51:34 · 1464 阅读 · 0 评论 -
数据结构 — 二叉树(创建、遍历)java实现
1、二叉链式存储结构节点类public class BiTreeNode { //域 public Object data; public BiTreeNode lchild,rchild; //构造空节点 public BiTreeNode() { this(null); } //构造左右孩子域为空的二叉树 public BiTreeNode(Object d原创 2015-11-28 09:48:47 · 1165 阅读 · 0 评论 -
数据结构 — AVL tree(平衡二叉树)
# BST(二叉搜索树、二叉查找树、二叉排序树)定义:1、要么是一棵空树2、如果不为空,那么其左子树节点的值都小于根节点的值;右子树节点的值都大于根节点的值3、其左右子树也是二叉搜索树# AVL tree(平衡二叉树)定义: 平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左原创 2015-12-25 14:36:28 · 4653 阅读 · 1 评论 -
数据结构 — 树 与 二叉树、森林
一、常用术语:1)树的节点2)节点路径:从根节点到该节点所经历的节点和分支的顺序。3)路径长度:节点路径包含的分支数。4)节点的度:节点拥有的字树的数目。5)树的度:所有节点的度 的最大值。6)叶子节点(终端节点)树中 节点的度为0的节点。7)分支节点(非终端节点)树中 节点的度不为0的节点。树中除了叶子节点的其他节点。8)孩子节点(子节点原创 2015-11-27 13:24:41 · 1074 阅读 · 0 评论 -
图 之 MST(最小生成树 — kruskal算法 )并查集实现
#并查集的优化:(1) Find_Set(x)时,路径压缩寻找祖先时,我们一般采用递归查找,但是当元素很多亦或是整棵树变为一条链时,每次Find_Set(x)都是O(n)的复杂度。为了避免这种情况,我们需对路径进行压缩,即当我们经过”递推”找到祖先节点后,”回溯”的时候顺便将它的子孙节点都直接指向祖先,这样以后再次Find_Set(x)时复杂度就变成O(1)了,如下图所示。原创 2015-12-26 17:41:10 · 4349 阅读 · 0 评论 -
算法 — 最基础のc语言算法
1、斐波拉契数列#include using namespace std;int main(){ int n1 = 1, n2 = 1, display; int count; cin>>count; cout<<n1<<endl<<n2<<endl; while(count--) { /* display = n1 + n2;转载 2016-02-19 14:05:24 · 689 阅读 · 0 评论 -
51Nod - 1459 迷宫游戏 dijkstra拓展
/** 51Nod 1459 迷宫游戏 dijkstra拓展*/package p01;import java.io.*;import java.util.Scanner;public class t1 { static int[] grade; static int[][] graph; static final int INFINITY = 1<原创 2016-06-28 12:08:37 · 1161 阅读 · 0 评论 -
Machine Learning - Andrew NG Class02 - 监督学习应用.梯度下降
问题导读:1.基本概念解决方案:基本概念课程中要经常使用的几个符号:变量定义(符号 Notation)(术语 terminology):这里47个房子的 面积-价格的数据集:m = Number of training examples (训练样本的数目)x’s = “input” variable (原创 2016-05-22 18:10:08 · 770 阅读 · 0 评论 -
数据结构 — 图 之 拓扑排序 (AOV网)
【度娘说】:对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排原创 2015-11-26 16:59:22 · 2563 阅读 · 0 评论 -
数据结构 — 图的概述
一、基础知识1、欧拉闭迹:每个顶点的度均为偶数,才可能存在从任意顶点出发,经过所有边恰好一次,并最终回到出发顶点的走法。2、定义:图G = (V,E)由有穷非空集合V(G)-> 顶点(vertex) 和 有穷允空集合E(G) -> 边(edge)构成。3、分类:无向图 ->(v0,v1)和(v1,v0)表示同一条边,有向图 ->(v0,v1)表示顶点v0为尾,顶点v1为头的边,原创 2015-11-19 14:56:26 · 770 阅读 · 0 评论 -
数据结构 — 3.模式匹配
【问题描述】试编写一个算法,识别依次读入的一个以@为结束符的字符序列是否为形如"序列1&序列2"模式的字符序列. 其中序列1和序列2中都不含字符'&',且序列2是序列1的逆序.例如,"a+b&b+a"是属于该模式的字符序列则输出yes,而"1+3&3-1"则输出no.【样例输入】a+b&b+a@【样例输出】yes/* 顺序栈*/#include#include原创 2015-10-27 17:36:52 · 5917 阅读 · 0 评论 -
数据结构 — 5.二叉树层次遍历
【问题描述】编写按层次顺序(同一层自左至右)遍历二叉树的算法.【输入形式】A B * C * * D * * ( 按照先序输入二叉树中结点的值、字符在输入中没有空格 )【输出形式】A B D C#include #include #include using namespace std;typedef struct BiTNode{ char data; B原创 2015-10-28 20:33:40 · 974 阅读 · 0 评论 -
数据结构 — 1. 两个非递减有序单链表合并为非递增有序单链表
题目描述:两个非递减有序单链表合并为非递增有序单链表,不能增加新结点,可以增加新指针,不能利用循环链表,不能用顺序表,只能利用单链表本身的结点,通过改变指针的指向来获得结果。#include#include#include#define listsize 100typedef int elemtype;typedef struct{ elemtype *elem;原创 2015-10-27 17:16:30 · 15694 阅读 · 7 评论 -
数据结构 — 2.顺序表删除问题
【问题描述】已知A,B和C为三个非递减有序的线性表,现要求对A表做如下操作:删去那些既在B表中出现又在C表中出现的元素.试对顺序表编写实现上述操作的算法(注意题中并没有特别指明同一表中的元素值各不相同). 注意此题用顺序表编写程序.【输入形式】第一行为A表,第二行为B表,第三行为C表,分别以-1结束【输出形式】删除后的A表【样例输入】1 3 5 5 7 -1原创 2015-10-27 17:19:34 · 1478 阅读 · 0 评论 -
数据结构 — 4.删除单链表中所有值大于mink且小于maxk的元素
【问题描述】已知线性表中的元素以值非递减有序排列,并以单链表作为存储结构(含头结点),试写一高效的算法,删除表中所有值大于mink且小于maxk的元素(若表中存在这样的元素),同时释放被删结点空间(注意:mink和maxk是给定的两个参变量,它们的值可以和表中的元素相同,也可以不同.) 这里注意是大于且小于,没有等于.【输入形式】第一行:非递减序列以-1结束 第二行为 mink原创 2015-10-27 17:40:27 · 14628 阅读 · 1 评论 -
数据结构 — 6.顺序队列(循环)实现二叉树层次遍历
【问题描述】编写按层次顺序(同一层自左至右)遍历二叉树的算法【输入形式】A B * C * * D * * 【输出形式】A B D C/* 1.顺序循环队列 2.二叉树先序创建 3.二叉树层次遍历(队列实现)*/#include#include#include#define MAX 50using namespace std原创 2015-10-29 12:01:18 · 5242 阅读 · 1 评论 -
数据结构 — 图之邻接表存储创建和深度优先遍历
【描述】: 该graph采用邻接表存储,首先创建图,然后对其进行深度优先遍历。【输入】:81 2 -10 3 4 -10 5 6 -11 7 -11 7 -12 7 -12 7 -13 4 5 6 -1【输出】:0 1 3 7 4 5 2 6 /* * 无向图的邻接表创建81 2 -10 3 4原创 2015-11-20 16:14:40 · 5202 阅读 · 0 评论 -
数据结构 — 图 之 MST(最小生成树 — prim算法 )
【描述】:采用邻接矩阵方式储存图,创建图,生成最小生成树。【输入】:7 90 1 2 3 4 5 60 1 280 5 101 2 161 6 142 3 123 4 223 6 184 5 254 6 24【输出】:0,5权值: 10 | 5,4权值: 25 | 4,3权值: 22 | 3,2权值: 12 | 2,1原创 2015-11-23 22:47:56 · 2365 阅读 · 0 评论 -
数据结构 — 图 之 MPT(最短路径 — dijkstra算法 )
【描述】: 无向图的最短路径 — Dijkstra(适用于非负权值边)【输入】:【输出】:顶点 距离(与源点)0 01 32 53 44 4/* Dijkstra(不适用于负权值的边)*/原创 2015-11-24 18:18:16 · 1523 阅读 · 0 评论 -
数据结构 — 图 之 广度优先遍历
【描述】: 图的bfs【输入】:81 2 -10 3 4 -10 5 6 -11 7 -11 7 -12 7 -12 7 -13 4 5 6 -1【输出】:0 1 2 3 4 5 6 7/* *图的广度优先遍历 *1.链式队列(链表的头节点中存数据、节点的尾插法、头节点原创 2015-11-21 13:05:48 · 923 阅读 · 1 评论 -
数据结构 — 排序算法(基础)
1、直接插入排序/*插入排序*/void insertion_sort (element arr[], int n) { int i,j; element next; for(i = 1; i<n; i++) { /*要插入的元素*/ next = arr[i]; /*找要插入元素next的 插入位置*/ for(j = i-1; j>=0 && next<arr[j]原创 2015-12-13 17:38:42 · 655 阅读 · 0 评论 -
数据结构 - 一些常见的树
二叉排序树(二叉查找树)左子树上所有结点的值均小于根结点右子树上所有结点的值均大于根结点左右子树均为二叉排序树平衡二叉树二叉排序树根节点的左右子树深度差最多相差1根节点的左右子树也是平衡二叉树LL 型:支撑点转换、顺时针旋转、旋转优先原则整理RR 型:支撑点转换、逆时针旋转、旋转优先原则整理LR 型:左子树支撑点转换、逆时针旋原创 2018-01-31 18:12:07 · 420 阅读 · 0 评论