Fork me on GitHub

随笔分类 -  数据结构与算法

数据结构与算法
摘要:1. 跳表Skip List 二分查找底层依赖的是数组随机访问的特性, 所以只能用数组来实现。如果数据存储在链表中,就真的没法用二分查找算法了吗?实际上,我们只需要对链表稍加改造,就可以支持类似“二分”的查找算法。 我们把改造之后的 数据结构叫作跳表(Skip list)。 跳表是一种各方面性能都比 阅读全文
posted @ 2020-07-23 16:48 kris12 阅读(470) 评论(0) 推荐(0) 编辑
摘要:1. 链表 数组需要一块连续的内存空间来存储,对内存的要求比较高。如果申请一个 100MB 大小的数组,当内存中没有连续的、足够大的存储空间时,即便内存的剩余总可用空间大于 100MB,仍然会申请失败。 而链表恰恰相反,它并不需要一块连续的内存空间,它通过“指针”将一组零散的内存块串联起来使用,所以 阅读全文
posted @ 2020-07-23 16:46 kris12 阅读(353) 评论(0) 推荐(0) 编辑
摘要:1. 树Tree 2. 二叉树 Binary Search 二叉树遍历 Pre-order/In-order/Post-order 1. 前序(Pre-order):根-左-右 2. 中序(In-order):左-根-右 (如果一棵树是二叉搜索树,它的中序是有序的) 3. 后序(Post-order 阅读全文
posted @ 2020-07-21 23:03 kris12 阅读(776) 评论(0) 推荐(0) 编辑
摘要:1. 二进制计数法 机器里的数字表示方式和存储格式就是 二进制 十进制 < — > 二进制 : 如何转换? 4(d): 0100 (0*2^0 + 0*2^1 + 1*2^2) 8(d): 01000 5(d): 0101 6(d): 0110 2. 二进制的位操作-位运算 位运算符: 左移(分为逻 阅读全文
posted @ 2020-07-21 23:02 kris12 阅读(882) 评论(0) 推荐(0) 编辑
摘要:1. 搜索算法 在树(图/状态集)中寻找特定节点 深度优先搜索算法和广度优先搜索算法都是基于“图”这种数据结构。 图上的搜索算法就是,在图中找出从一个顶点出发,到另一个顶点的路径。图上的搜索算法有深度优先、广度优先搜索算法,和A*A∗、IDA*IDA∗ 等启发式搜索算法。 广度优先搜索和深度优先搜索 阅读全文
posted @ 2020-07-19 19:26 kris12 阅读(2083) 评论(0) 推荐(0) 编辑
摘要:1. 图的概念 树是非线性表数据结构,图(Graph)也是另一种非线性表数据结构。 树中的元素称为节点,图中的元素叫作顶点(vertex)。图中的一个顶点可以与任意其他顶点建立连接关系。这种建立的关系叫作边(edge)。比如社交网络就是一种典型的图结构。 跟顶点相连接的边的条数叫作顶点的度(degr 阅读全文
posted @ 2020-07-15 19:32 kris12 阅读(438) 评论(0) 推荐(0) 编辑
摘要:算法的开章,递归是实现其他高级算法如深度优先、分治等的基础; 碰到一个题目就找它的重复性,重复性有最近的重复性(根据重复性怎么构造怎么分解-->分治、回溯等办法,本质就是递归),或者最优重复性(即动态规划)。 本质上就是找它的重复性。 找重复性以及分解问题,最后组合每个子问题的结果。 1. 分治 D 阅读全文
posted @ 2020-07-11 17:40 kris12 阅读(608) 评论(0) 推荐(0) 编辑
摘要:1. 递归Recursion 1.1 概念 生活中就有很多用到递归的例子。 周末带着女朋友去电影院看电影,女朋友问,咱们现在坐在第几排啊?电影院里面太黑了,看不清 于是你就问前面一排的人他是第几排,你想只要在他的数字上加一,就知道自己在哪一排了。但是,前面的人也不知道,所以他也问他前面的人。就这样一 阅读全文
posted @ 2020-06-28 20:01 kris12 阅读(312) 评论(0) 推荐(0) 编辑
摘要:1. 树、链表和图的联系 树、链表和图它们之间都有相应的联系; 单链表 Linked List 单链表:Value & Next ,每个Next都指向它的后续节点,HEAD头结点、TAIL尾节点。它最大的问题就是查询时太慢(如果要访问中间的或者倒数某个节点,必须从头节点一个个看)。 > 加索引--跳 阅读全文
posted @ 2020-06-15 15:43 kris12 阅读(108) 评论(0) 推荐(0) 编辑
摘要:哈希表(HashTable )& 集合(Set) 1. 哈希(散列)表 HashTable 1.1 概念 哈希表(Hash table),也叫散列表,来源于数组,它借助散列函数对数组这种数据结构进行扩展,利用的是数组支持按照下标随机访问元素的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。可 阅读全文
posted @ 2020-06-14 17:12 kris12 阅读(560) 评论(0) 推荐(0) 编辑
摘要:概述 栈Stack |队列Queue| 双端队列Deque| 优先队列PriorityQueue 堆栈和队列特点: 1. Stack - First In Last Out(FILO) 先入后出,先进来的被压入栈底 .Array or Linked List 2. Queue - First In 阅读全文
posted @ 2020-06-14 16:28 kris12 阅读(360) 评论(0) 推荐(0) 编辑
摘要:1. 数据结构与算法概念 是什么: 数据结构指的是“一组数据的存储结构”,算法指的是“操作数据的一组方法”。 数据结构是为算法服务的,算法是要作用在特定的数据结构上的。 为什么要用: 数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,如何让代码运行得更快,如何让代码更省存储空间; 选用合适 阅读全文
posted @ 2019-11-17 23:26 kris12 阅读(355) 评论(0) 推荐(0) 编辑
摘要:1. 概述 https://www.cnblogs.com/onepixel/p/7674659.html https://www.bilibili.com/video/av25136272 https://www.bilibili.com/video/av63851336 1.1 比较类排序 通过 阅读全文
posted @ 2019-05-14 22:39 kris12 阅读(682) 评论(0) 推荐(0) 编辑
摘要:1. 数据结构概述 数据结构的介绍 1) 数据结构是一门研究算法的学科,只从有了编程语言也就有了数据结构.学好数据结构可以编写出更加漂亮,更加有效率的代码。 2) 要学习好数据结构就要多多考虑如何将生活中遇到的问题,用程序去实现解决. 3) 程序 = 数据结构 + 算法 2. 数组 在大部分编程语言 阅读全文
posted @ 2019-05-14 22:39 kris12 阅读(638) 评论(0) 推荐(0) 编辑

levels of contents
点击右上角即可分享
微信分享提示