打赏

随笔分类 -  (C-0)数据结构算法学习笔记

数据结构和算法,笔试面试题分析
摘要:文章集合 Netty的异步模型分析(1) Netty的异步模型分析(1) 从最常见,最简单的bind入手——如何正确启动一个Netty服务器 “你”怎么定义异步? 正确启动服务器的方式 前面扯了那么多Netty的线程调度模型,以及Netty底层的高性能实现细节,从本篇开始看看Netty的API的用法 阅读全文
posted @ 2020-03-28 01:32 dashuai的博客 阅读(1107) 评论(0) 推荐(0) 编辑
摘要:前言和目标 首先,好久之前写了:Netty 学习笔记(1)Netty 通信原理,可惜很久没更新了,不少博客园的网友经常问,到底还写不写,后来连问都不问了,深表惭愧,从今天开始,重新开启这个系列文章——Netty源码学习笔记。 其次,立意不同于一些零散的个人博客文章,打算从头到尾,形成一个系列,也不想 阅读全文
posted @ 2020-03-08 01:22 dashuai的博客 阅读(1251) 评论(0) 推荐(0) 编辑
摘要:有向无环图:无环的有向图,简称 DAG (Directed Acycline Graph) 图。 一个有向图的生成树是一个有向树,一个非连通有向图的若干强连通分量生成若干有向树,这些有向数形成生成森林。 在工程计划和管理方面的应用 除最简单的情况之外,几乎所有的工程都可分为若干个称作“活动”的子工程 阅读全文
posted @ 2015-04-13 23:11 dashuai的博客 阅读(5311) 评论(0) 推荐(0) 编辑
摘要:图的连通性问题:无向图的连通分量和生成树,所有顶点均由边连接在一起,但不存在回路的图。 设图 G=(V, E) 是个连通图,当从图任一顶点出发遍历图G 时,将边集 E(G) 分成两个集合 T(G) 和 B(G)。其中 T(G)是遍历图时所经过的边的集合,B(G) 是遍历图时未经过的边的集合。显然,G 阅读全文
posted @ 2015-04-08 21:32 dashuai的博客 阅读(5562) 评论(0) 推荐(0) 编辑
摘要:图的遍历的定义: 从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次。(连通图与非连通图) 深度优先遍历(DFS); 1、访问指定的起始顶点; 2、若当前访问的顶点的邻接顶点有未被访问的,则任选一个访问之;反之,退回到最近访问过的顶点;直到与起始顶点相通的全部顶点都访问完毕; 3、若此时图 阅读全文
posted @ 2015-04-08 16:15 dashuai的博客 阅读(100092) 评论(1) 推荐(14) 编辑
摘要:图(Graph)是一种非线性结构 图的特点(多对多),顶点之间的关系是任意的,图中任意两个顶点之间都可能相关,顶点的前驱和后继个数无限制。 图:数据元素间存在多对多关系的数据结构,加上一组基本操作构成的抽象数据类型。 图的基本术语 顶点:图中的数据元素。 弧:若 <v, w>∈VR,则 <v, w> 阅读全文
posted @ 2015-04-07 21:59 dashuai的博客 阅读(9218) 评论(0) 推荐(0) 编辑
摘要:定义一个方法(函数),实现输入一个链表的头结点,然后可以反转这个链表的方向,并输出反转之后的链表的头结点。 typedef struct Node{ int data; Node *next; } Node, *List; 链表类的问题,涉及到了很多指针的操作,需要严谨的分析,全面的分析问题之后,在 阅读全文
posted @ 2015-04-07 18:11 dashuai的博客 阅读(25081) 评论(5) 推荐(4) 编辑
摘要:哈夫曼树 哈夫曼树也叫最优二叉树(哈夫曼树) 问题:什么是哈夫曼树? 例:将学生的百分制成绩转换为五分制成绩:≥90 分: A,80~89分: B,70~79分: C,60~69分: D,<60分: E。 if (a < 60){ b = 'E'; } else if (a < 70) { b = 阅读全文
posted @ 2015-04-07 16:14 dashuai的博客 阅读(187031) 评论(13) 推荐(54) 编辑
摘要:树的存储结构 双亲表示法 孩子表示法: (a)多重链表(链表中每个指针指向一棵子树的根结点); (b)把每个跟结点的孩子结点排列起来,看成一个线性表,且以单链表做存储结构.且N个头指针也组成一个线性表. 孩子兄弟表示法://二叉树表示法或二叉链表表示法 以二叉链表做树的存储结构,链表中结点的两个链域 阅读全文
posted @ 2015-04-04 10:46 dashuai的博客 阅读(3945) 评论(0) 推荐(1) 编辑
摘要:防御性编程习惯 程序员在编写代码的时候,预料有可能出现问题的地方或者点,然后为这些隐患提前制定预防方案或者措施,比如数据库发生异常之后的回滚,打开某些资源之前,判断图片是否存在,网络断开之后的重连次数或者是否连接备用网络,除法运算中的除数问题,函数或者类在接受数据的时候的过滤情况,比如如果输入一个指 阅读全文
posted @ 2015-04-04 01:10 dashuai的博客 阅读(619) 评论(0) 推荐(0) 编辑
摘要:有一个单链表,提供了头指针和一个结点指针,设计一个函数,在 O(1)时间内删除该结点指针指向的结点。 众所周知,链表无法随机存储,只能从头到尾去遍历整个链表,遇到目标节点之后删除之,这是最常规的思路和做法。 如图所示,删除结点 i,那么只需找到 i 的前驱 h,然后连 h 到 j,再销毁i 即可。虽 阅读全文
posted @ 2015-04-03 20:05 dashuai的博客 阅读(7175) 评论(0) 推荐(0) 编辑
摘要:先根,后子树;先左子树,后右子树 二叉树的根节点 a 入队 a 的子树,根节点 b 和 c 分别入队 然后 b 的子树的根节点入队(为空) c 的子树的根节点入队 d 的子树的根节点入队(为空) e 的子树的根节点入队 f 的子树的根节点入队(为空) g的子树的根节点入队(为空)结束层序遍历,整个过 阅读全文
posted @ 2015-04-03 17:59 dashuai的博客 阅读(4081) 评论(1) 推荐(0) 编辑
摘要:表达式的表示 如图所示的二叉树表达式: a+b*(c-d)-e/f 若先序遍历此二叉树,按访问结点的先后次序将结点排列起来,其先序序列为: (波兰式,前缀表达式) -+a*b-cd/ef 按中序遍历,其中序序列为:a+b*c-d-e/f (中缀表达式) 按后序遍历,其后序序列为:abcd-*+ef/ 阅读全文
posted @ 2015-04-02 22:02 dashuai的博客 阅读(7307) 评论(1) 推荐(2) 编辑
摘要:反向计算:编写一个函数将一个整型转换为二进制形式 反向计算问题,递归比循环更简单 分析:需要理解,奇数的二进制最后一位是1,偶数的二进制最后一位一定是0,联想记忆,这个和整型的奇偶性是一致的,1本身就是奇数,0本身是偶数。 十进制整数转换为二进制整数采用"除2取余,逆序排列"法。 具体做法是:用2整 阅读全文
posted @ 2015-04-01 23:17 dashuai的博客 阅读(3073) 评论(0) 推荐(0) 编辑
摘要:分析递归算法三种方法 替换法、迭代法、通用法(master method) 作用:分析递归算法的运行时间 分治算法 将一个问题分解为与原问题相似但规模更小的若干子问题,递归地解这些子问题,然后将这些子问题的解结合起来构成原问题的解。这种方法在每层递归上均包括三个步骤: divide(分解):将问题划 阅读全文
posted @ 2015-03-31 20:04 dashuai的博客 阅读(8007) 评论(0) 推荐(0) 编辑
摘要:树的定义和基本术语 树(Tree)是n(n>=0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件: (1)有且仅有一个特定的称为根(Root)的结点; (2)其余的结点可分为m(m>=0)个互不相交的子集T1,T2,T3…Tm,其中每个子集又是一棵树,并称其为子树(Subtree)。 树 阅读全文
posted @ 2015-03-30 15:48 dashuai的博客 阅读(5271) 评论(0) 推荐(2) 编辑
摘要:基数排序思想 完全不同于以前的排序算法,可以说,基数排序也叫做多关键字排序,基数排序是一种借助“多关键字排序”的思想来实现“单关键字排序”的内部排序算法。 两种方式: 1、最高位优先,先按照最高位排成若干子序列,再对子序列按照次高位排序 2、最低位优先:不必分子序列,每次排序全体元素都参与,不比较, 阅读全文
posted @ 2015-03-29 01:07 dashuai的博客 阅读(13352) 评论(0) 推荐(0) 编辑
摘要:归并类的排序算法 归并:将两个或两个以上的有序表组合成一个新的有序表。 内部排序中,通常采用的是 2-路归并排序。即:将两个位置相邻的记录有序子序列归并为一个记录有序的序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用 阅读全文
posted @ 2015-03-25 11:08 dashuai的博客 阅读(16936) 评论(0) 推荐(0) 编辑
摘要:选择类的排序算法 简单选择排序算法 采用最简单的选择方式,从头到尾扫描待排序列,找一个最小的记录(递增排序),和第一个记录交换位置,再从剩下的记录中继续反复这个过程,直到全部有序。 具体过程: 首先通过 n –1 次关键字比较,从 n 个记录中找出关键字最小的记录,将它与第一个记录交换。 再通过 n 阅读全文
posted @ 2015-03-24 11:05 dashuai的博客 阅读(13439) 评论(1) 推荐(1) 编辑
摘要:之前有过整理链表等的概念和基本算法。比较重要的是插入,删除,遍历,建表(尾插法,头插法) 回忆链表尾部插入结点: 1 #include <iostream> 2 using namespace std; 3 4 typedef struct Node{ 5 int data;//数据域 6 Node 阅读全文
posted @ 2015-03-22 16:51 dashuai的博客 阅读(775) 评论(0) 推荐(1) 编辑

Flag Counter欢迎关注微信公众号