数据结构
文章平均质量分 86
带你玩玩转数据结构,任何困难那都不算事儿
snow_5288
三天不读书,智商输给猪
展开
-
【排序五】非比较排序(计数排序&&基数排序)
比较排序:【排序一】插入排序(直接插入排序&&希尔排序)【排序二】选择排序(选择排序&&堆排序)【排序三】交换排序(冒泡排序&&快速排序)【排序四】归并排序一、计数排序1、基本思想 给定一组要排序的序列,找出这组序列中的最大值,然后开辟一个最大值加1大小的数组,将这个数组里面的元素全部置零,然后用这个数组统计出要排序的序列中各个元素出现的次数原创 2017-03-06 22:39:30 · 995 阅读 · 0 评论 -
【排序4】归并排序
【排序一】插入排序(直接插入排序&&希尔排序)【排序二】选择排序(选择排序&&堆排序)【排三】交换排序(冒泡排序&&序快速排序)一、归并排序1、基本思想 归并排序(Merge sort,台湾译作:合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。算法原理:1>原创 2017-03-06 18:02:29 · 980 阅读 · 0 评论 -
【排序三】交换排序(冒泡排序&&快速排序)
【排序一】插入排序(直接插入排序&&希尔排序)【排序二】选择排序(选择排序&&堆排序)一、冒泡排序1、基本思想 冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。为什么会叫做冒泡排序呢?这是由于它的算法思想就类似于鱼儿在河里吐泡泡的场景,例如升序排列一列数,它会两两相邻的数据进行比较,如果前者大于后者就交换,重复此番工作直到交换到最后两原创 2017-03-04 21:45:07 · 9960 阅读 · 5 评论 -
【排序二】选择排序(选择排序&&堆排序)
【排序一】插入排序一、选择排序1、基本思想 顾名思义,选择排序就是每次选一个数据放到其应该出现的位置,以升序(降序)为例,首先选最小(最大)的数据放到正确位置,接着再选次小(次大)的数据放到合适的位置,以此类推,直到最大(最小)的数据被放入最后一个位置,排序就算完成。总体算法分三步完成:选数据--->将所选数据放入合适位置--->缩小需要排序的范围图解原创 2017-03-01 20:27:47 · 1405 阅读 · 1 评论 -
【排序一】插入排序(直接插入排序&&希尔排序)
一、排序的分类原创 2017-03-01 15:08:43 · 2155 阅读 · 8 评论 -
经典大数据面试题
什么是大数据?大数据(big data,mega data),或称巨量资料,指的是需要新处理模式才能具有更强的决策力、洞察力和流程优化能力的海量、高增长率和多样化的信息资产。 在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》中大数据指不用随机分析法(抽样调查)这样的捷径,而采用所有数据进行分析处理。大数据的4V特点:Volume(大量)、Velocity(高速)、Variety(多原创 2017-02-22 22:59:49 · 5975 阅读 · 0 评论 -
Can you use map and set???
一、map和set的引入 我们都知道,STL在C++ 中得到了广泛使用,它不仅仅由于是提供了类似vector,list等方便使用的容器,更是因为它封装了许多复杂的数据结构算法和大量数据结构的操作。vector封装数组,list封装链表,而map和set则是用来封装二叉树的。 还有要知道的就说STL中的容器分为两大类:序列式容器和关联式容器,其中vector和li原创 2017-02-16 12:57:38 · 884 阅读 · 4 评论 -
二叉树的线索化
测试环境:VS2010 一、线索二叉树的引入 二叉树是一种非线性结构,遍历二叉树几乎都是通过递归或者用栈辅助实现非递归的遍历。用二叉树作为存储结构时,取到一个节点,只能获取节点的左孩子和右孩子,不能直接得到节点的任一遍历序列的前驱或者后继。 为了保存这种在遍历中需要的信息,我们利用二叉树中指向左右子树的空指针来存放节点的前驱和后继信息。原创 2016-12-31 19:33:09 · 3108 阅读 · 0 评论 -
二叉树的非递归遍历
上篇文章我们实现了二叉树原创 2016-12-25 17:28:36 · 2713 阅读 · 0 评论 -
树&&二叉树(递归实现)
1、树的定义2、树的基本术语3、树的存储结构1、二叉树的定义2、二叉树的5种基本状态3、满二叉树与完全二叉树4、二叉树的主要性质5、二叉树的存储结构6、二叉树的遍历7、代码模拟二叉树(递归)原创 2016-12-17 19:51:56 · 3495 阅读 · 0 评论 -
将链表的所有奇数元素放于偶数元素前面
具体要求:头文件:#pragma once#include#include#includetypedef int DataType;typedef struct Node{ DataType data; struct Node *next;}*PNode,Node;void ParityRearrangement(PNode *pHead)原创 2016-09-22 23:30:40 · 3987 阅读 · 0 评论 -
链表中的带环相交问题
PNode CheckCircle(PNode pHead);//判断链表是否带环int GetCircleLength(PNode pMeetNode);//如果带环,求环的长度PNode GetInterNode(PNode pHead,PNode pMeetNode);//获取环的入口点int CheckCrossWithCircle(PNode pHead1,PNode pHead2);//判断链表是否相交(有可能带环)PNode UnionSet(Node *list1,Node *lis原创 2016-09-19 23:18:06 · 1198 阅读 · 0 评论 -
单链表的逆置,排序,合并有序链表,不带环相交
PNode Reserse_LinkList(PNode *pHead);//逆置单链表void Bubbleort(PNode pHead);//冒泡排序PNode MergeOrder_LinkList(PNode pList1,PNode pList2);//合并两个有序链表,合并后仍有序int CheckCross(PNode pList1,PNode pList2);//判断链表是否相交PNode Cross(PNode pList1,PNode pList2);//求两个链表相交的交点原创 2016-09-17 19:34:17 · 1174 阅读 · 0 评论 -
链表面试题逆序打印,删除无头非尾节点,非头位置插入,约瑟夫环,查找中间和倒数第k个节点
PNode EndNode(PNode *pHead);//返回最后一个节点void ReversePrint(PNode pHead);//逆序打印链表void DeleteNotTail(PNode pos);//删除无头非尾节点void InsertNotHead(PNode *pHead,PNode pos,DataType data);//在链表的非头位置插入节点PNode JosephCircle(PNode *pHead,int m);//约瑟夫环PNode FindMidNode(原创 2016-09-15 20:16:59 · 6128 阅读 · 0 评论 -
单链表的基本操作
void Init_LinkList(PNode *pHead);//初始化PNode BuyNode(DataType data);//创建新节点void PushBack(PNode *pHead,DataType data);//尾插void PopBack(PNode *pHead);//尾删void PushFront(PNode *pHead,DataType data);//头插void PopFront(PNode *pHead);//头删PNode Find(PNode pHe原创 2016-09-13 12:31:54 · 1036 阅读 · 0 评论 -
C++实现动态顺序表
#includeusing namespace std;#include#define DataType intclass Seqlist { friend ostream& operator<<(ostream &_cout,const Seqlist& s);public: Seqlist(); Seqlist(DataType arr[],size_t size);原创 2016-10-20 22:57:23 · 3421 阅读 · 0 评论 -
模板实现顺序表和链表
注:以下所有代码均在VS2010环境下测试C语言实现动态顺序表: http://blog.csdn.net/snow_5288/article/details/51558125C语言实现单链表: http://blog.csdn.net/snow_5288/article/details/52524830C++实现动态顺序原创 2016-11-12 14:05:57 · 6156 阅读 · 0 评论 -
【STL】list的应用模拟实现
STL:标准模板库,惠普实验室开发的一系列软件的统称。STL的六大组件:容器,迭代器,算法,适配器,空间配置器,仿函数。下面模拟序列式容器的一个列表:list(本质:带头结点的双向循环链表)。库中list的使用:#include #include #include using namespace std;//迭代器的使用void ListTest()原创 2016-12-04 22:58:32 · 6221 阅读 · 0 评论 -
【STL】C++模拟Vector容器
#include #include using namespace std;//类型萃取struct TrueType{ bool Get() { return true; }};struct FalseType{ bool Get() { return false; }};template struct TypeTraits{ typedef F原创 2016-12-09 16:50:00 · 5127 阅读 · 0 评论 -
C++实现矩阵压缩存储与(快速)转置
注意:以下所有代码均在VS2010环境下运行测试 了解了C语言以后,我们都知道,要存储一个矩阵,用一个二维数组即可实现,今天,由我来带领大家玩点新鲜的,对矩阵进行压缩存储并对其进行转置。一、对称矩阵及对称矩阵的压缩存储1、什么是对称矩阵? 设一个N*N的方阵A,A中任意元素Aij,当且仅当Aij == Aji(0 && 0原创 2016-12-10 19:05:00 · 12692 阅读 · 1 评论 -
数据结构之广义表模拟
测试环境:VS2010 广义表是一种非线性的结构,是线性表的一种扩展,是有n个元素组成有限序列。广义表的定义是递归的,因为在表的描述中又得到了表,允许表中有表。eg: A = () B = (a,b) C = (a,b,(c,d)) D = (a,b,(c,d),(e,(f),h)) E = (((),()))存储结构:原创 2016-12-15 09:18:41 · 10544 阅读 · 0 评论