Algorithm&Data Structures
Coding_Peasant
这个作者很懒,什么都没留下…
展开
-
链表
链表链表(linked list):链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 注:使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实原创 2017-03-23 15:40:03 · 558 阅读 · 0 评论 -
图
图(graph):结点之间的关系可以是任意的,图中任意两个数据之间都可能相关。二元组定义:图G是一个二元组(V,E),其中V称为顶点集(Vertexes Set);E称为边集(Edges Set)。有向图:VR是两个顶点之间的关系集合;若,则表示从v到w的一条弧(arc),且称v为弧尾(tail)或初始点(initialnode),称w为弧头(head)或终端点(terminal node),此时的原创 2017-06-21 20:00:07 · 382 阅读 · 0 评论 -
二叉树
二叉树(Binary Tree):每个结点至多只有两颗子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。 二叉树性质: (1) 在二叉树的第i层上至多有个结点。 (2) 深度为k的二叉树至多有个结点。 (3) 对任何一颗二叉树T,如果其终端结点数为,度为2的结点数为,则。 (4) 具有n个结点的完全二叉树的深度原创 2017-06-21 19:35:42 · 4269 阅读 · 0 评论 -
递归
递归(recursion):一个直接调用自己或通过一系列调用语句间接调用自己。对问题进行分解、求解的过程得到的是和原问题性质相同的子问题,由此自然得到一个递归算法,且比利用“栈”实现的非递归算法跟符合人们的思维逻辑。利用分治法(divide and conquer)进行递归算法设计:写出递归定义:基本项和归纳项。基本项:描述了一个或几个递归过程的终结状态(不需要递归可以直接求解的状态)。归纳项:描述原创 2017-03-23 16:46:57 · 331 阅读 · 0 评论 -
动态规划
动态规划(dynamic programming):是运筹学的一个分支,是求解决策过程最优化的数学方法。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果我们能够原创 2017-03-23 17:18:34 · 426 阅读 · 0 评论 -
笔试题
#include<stack>#include<vector>#include<string>using namespace std;/**利用两个栈实现一个队列*/template<class T> class Queue{public: Queue(){ } ~Queue(){ } void push(const T& t); T p原创 2017-03-23 17:22:33 · 239 阅读 · 0 评论 -
查找
查找(searching):根据给定的某个值,在查找表中确定一个其关键字等于给定值的记录或数据元素。若表中存在这样的一个记录,则称查找是成功的,此时查找的结果为给出整个记录的信息,或指示该记录在查找表中的位置;若表中不存在关键字等于给定值的记录,则称查找不成功,此时查找的结果可给出一个空记录或空指针。 注:查找表(Search table):是由同一类型的数据元素构成的集合。关键字(key):是数原创 2017-03-23 17:04:04 · 302 阅读 · 0 评论 -
排序
排序(sorting):将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列。排序分内部排序和外部排序。外部排序:指的是待排序记录的数量很大,以致内存一次不能容纳全部记录,在排序过尚需对外存进行访问的排序过程。内部排序:指的是待排序记录存放在计算机随机存储器中进行的排序过程。依据不同原则对内部排序方法进行分类:交换排序、插入排序、选择排序、归并排序、基数排序。通常,在排序过程中需进行原创 2017-03-23 17:00:09 · 477 阅读 · 0 评论