数据结构
phonycat
这个作者很懒,什么都没留下…
展开
-
数据结构带着复杂度跑来了
复杂度分为时间复杂度和空间复杂度时间复杂度 1)时间复杂度强调的是语句执行的操作次数 2)在实际中通常情况是算法的最坏情况; 3)忽略掉常数; 4)只看函数式中增长最快的表达式,忽略系数; 5)递归算法的时间复杂度计算:递归总次数*每次递归次数.空间复杂度空间复杂度,它是对一个算法在运行过程中临时占用存储空间原创 2017-12-06 18:23:01 · 168 阅读 · 0 评论 -
哈希表的基本操作
理想的搜索方式:可以不经过任何比较,一次直接从表中得到要搜索的元素,构造一种结构,通过某种函数使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么查找时就能通过函数一下找到该元素哈希本质上是一个数组,通过哈希函数使元素关键码和元素存储位置有一定的映射关系搜索某一元素时,通过哈希函数计算出元素存储位置,在数组中按此位置取元素比较,相等即存在插入,通过哈希函数计算出元素的存储...原创 2018-07-30 16:06:49 · 963 阅读 · 0 评论 -
数据结构的八大排序
直接插入排序,希尔排序选择排序,堆排序冒泡排序,快速排序归并排序计数排序直接插入排序 关键元素tmp前面的元素已经是排好序的,把tmp放到合适的地方void InsertSort(int* a,size_t n){ assert(a); for(size_t i=0;i<n-1;++i) { int end=i; ...原创 2018-05-21 20:29:00 · 328 阅读 · 0 评论 -
非递归遍历二叉树
【非递归前中后序遍历二叉树】 有关二叉树的建立及基本操作在上一篇,戳链接二叉树的基本操作 【非递归·前序】 //非递归 前序遍历void BTreePrevOrderNonR(BTNode* root){ BTNode* cur = root; BTNode* top = NULL; stack S; StackInit(&S); ...原创 2018-03-04 09:52:01 · 410 阅读 · 0 评论 -
二叉树的基本操作
【递归前中后序遍历二叉树】 【求树的结点数,叶子数,第k层结点数,深度】 【求树中某个结点】 【判断是否为完全二叉树】 【层序遍历二叉树】 首先得有最基础的函数,创建新的结点,创建二叉树typedef int BTDataType;typedef struct BinaryTreeNode{ struct BinaryTreeNode* _left;//左子树 ...原创 2018-03-03 18:04:23 · 312 阅读 · 3 评论 -
链表面试题(四)
【判断单链表是否带环?求环的长度?环的入口点?以及每个算法的时间复杂度和空间复杂度】 【判断两个链表是否相交,求交点?(假设链表不带环)】 关于链表创建和基础的打印问题,在上一篇,戳链接 链表面试题(一) 13,【判断单链表是否带环?求环的长度?环的入口点?】 单链表带环问题,创建俩个指针,一个快指针,一个慢指针,快指针一下走两步,慢指针一下走一步,如果链表带环,最终两个指针会在环中相...原创 2018-03-03 15:32:46 · 200 阅读 · 2 评论 -
链表面试题(三)
9【查找单链表的中间结点,要求只能遍历一次链表】,10【查找单链表的倒数第k个结点,要求只能遍历一遍链表】,11【删除链表的倒数第k个结点】,12 【复杂链表的复制】创建链表 打印链表在上一篇,戳链接点击打开链接9.【查找单链表的中间结点,要求只能遍历一次链表】,创建两个指针,都从链表的开头向后遍历,一个一次走一步,一个一次走两步,等到快指针走到链表结束,慢指针也就走到了链表中间结点处SListN...原创 2018-03-01 16:05:17 · 215 阅读 · 0 评论 -
链表面试题(二)
5 【逆置/反转单链表】 6【 单链表排序(冒泡排序)】,7 【合并两个有序链表,合并后依然有序】,8【求两个已排序单链表中相同的数据】创建链表或是打印链表在上一篇,戳链接点击打开链接5【逆置/反转单链表】,创建一个新结点作为逆置链表的尾,从链表第一个结点开始,复制该结点并头插到逆置链表上,一直复制到原链表的最后一个结点,最后返回逆置好的链表SListNode* SListReverse(SLis...原创 2018-02-28 15:14:09 · 177 阅读 · 0 评论 -
链表面试题(一)
【从尾到头打印单链表】【删除一个无头单链表的非尾结点(不能遍历单链表】【在无头单链表的一个结点前插入一个结点(不能遍历链表)】【单链表实现约瑟夫环(JosephCircle)】首先得来结构和基础的函数:typedef int DataType;typedef int ComplexListNode;typedef struct SListNode{ struct SListNode* _...原创 2018-02-27 17:17:44 · 232 阅读 · 0 评论 -
堆-优先级队列和海量数据top K问题
在100亿个数中找出最大的前k个数(海量数据Top k问题),100亿啊,怎么找都觉得占空间很大啊,按一个数四个字节算,那也得40g啊,那得用堆的方法来做。 ...原创 2018-02-26 19:28:50 · 241 阅读 · 0 评论 -
堆和堆排序
大堆(小堆):任一结点所带的关键码都大于(小于)它的左右孩子所带的关键码,在堆顶顶点的关键码最大(最小),从根节点到每个节点的路径上组成的序列都是递减(递增)的堆存储在下标为0的数组中,因此在下标为i的结点时: ...原创 2018-02-26 17:50:05 · 323 阅读 · 0 评论 -
哈希扩展【位图,布隆】,海量数据处理
位图: 它是用一个byte位来标识一个整数存在或者不存在,一般用于大数据的简单确认是否存在 类似于哈希的直接定址法,只不过位图定在了一个位上,哈哈...原创 2018-08-01 16:25:41 · 197 阅读 · 0 评论