数据结构
鼹鼠的萝卜
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构---单链表
单链表原创 2017-12-31 12:45:09 · 246 阅读 · 0 评论 -
栈和队列
栈、队列原创 2018-01-12 11:57:52 · 308 阅读 · 0 评论 -
链表常见习题
从尾到头打印单链表 删除一个无头单链表的非尾节点(不能遍历链表) 在无头单链表的一个节点前插入一个节点(不能遍历链表) 逆置/反转单链表 单链表排序(冒泡排序)合并两个有序链表,合并后依然有序 查找单链表的中间节点,要求只能遍历一次链表 查找单链表的倒数第k个节点,要求只能遍历一次链表 删除链表的倒数第K个结点【1】从尾到头打印单链表 采用了四种方法:栈的应用、顺序...原创 2018-02-09 19:45:50 · 379 阅读 · 0 评论 -
堆的top-k问题
在大规模数据处理中,遇到的一类问题是,在海量数据中找出出现频率最高的前K个数,或者从海量数据中找出最大的前K个数,这类问题被称为“top K”问题。 堆的建立 解决top-k问题,可以用建堆方法来处理,选取最高或者最低的数据可以建立小堆来处理。 解决方案: 在海量数据中查找最大的前K个数,可以建立一个以K大小的小堆,小堆特点是堆顶(数组第一个元素)为当前堆结构的最小值,在海量数据中再次查找...原创 2018-02-26 21:18:30 · 595 阅读 · 0 评论 -
堆排序
堆排序是利用堆而设计的一种排序算法,堆排序是一种选择排序,它平均时间复杂度为O(nlogn),它是不稳定排序 **堆排序的基本思想: 将待排序序列构造成一个大堆(升序),(降序采用小堆)此时,整个序列的最大值就是堆顶的根节点,将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复循环执行,便能得到一个有序序列了void Ad...原创 2018-02-26 21:28:28 · 332 阅读 · 0 评论 -
搜索二叉树
二叉搜索树又称二叉排序树,它或者是一棵空树,或者具有以下性质的树: - 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 - 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值 - 它的左右子树也分别为二叉搜索树注意:搜索二叉树中没有相同的值。 因为搜索二叉树结构的特殊性,左子树永远比根节点小,右子树永远比根节点大,所以中序遍历一次二叉树,就可以得到一个升...原创 2018-02-27 15:53:50 · 520 阅读 · 0 评论 -
动态顺序表
顺序表原创 2018-02-05 20:31:41 · 357 阅读 · 0 评论 -
堆的常见操作
完整代码戳这里 【1】在一个关键码集合中挑选具有最小或最大关键码的元素进行处理的数据结构称为优先队列,堆(heap)也称为优先队列,堆的所有元素按照完全二叉树的顺序存储在一个一维数组中,同队列一样,堆在堆底插入元素,在堆头删除元素。 【2】堆可分为大堆和小堆。大堆:父亲节点大于等于其孩子节点;小堆:父亲节点小于等于其孩子节点。对于父亲节点和孩子节点两者之间关系(child=2*parent+1...原创 2018-02-25 21:03:28 · 416 阅读 · 0 评论 -
堆---优先级队列
1.优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。 2.用堆实现的优先队列中,最大堆只能对应最大优先队列,最小堆则是对应最小优先队列。 堆的实现,戳这里PriorityQueue.h#define N 1000typedef int Datatype;typedef...原创 2018-02-26 08:57:16 · 391 阅读 · 0 评论
分享