
《数据结构与算法之美》学习笔记
本专栏为学习《数据结构与算法之美》时记录的笔记。
林夏天
这个作者很懒,什么都没留下…
展开
-
《数据结构与算法之美》学习笔记(5) 哈希算法 红黑树
哈希算法 (1)什么是哈希算法? 将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。 (2)设计好的哈希算法要求 要想设计一个优秀的哈希算法,需要满足的几点要求: 从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法); 对输入数据非常敏感,哪怕原始数据只修改了一个 Bit,最后得到的哈希值也大不相同; 散列冲...原创 2020-04-16 22:29:05 · 272 阅读 · 0 评论 -
《数据结构与算法之美》学习笔记(4) 二分查找及其变形问题
二分查找及其变形问题 二分查找 二分查找针对的是一个有序的数据集合,查找思想有点类似分治思想。每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为 0。 (1)O(logn) 惊人的查找速度 二分查找是一种非常高效的查找算法。 即便 n 非常非常大,对应的 logn 也很小。比如 n 等于 2 的 32 次方,这个数很大了吧?大约是 42 亿。也就...原创 2020-03-25 21:23:06 · 252 阅读 · 0 评论 -
《数据结构与算法之美》学习笔记(3) 数据结构
数组 数组定义: 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 这个定义里有几个关键词。 第一是线性表(Linear List)。顾名思义,线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。除了数组,链表、队列、栈等也是线性表结构。 而与它相对立的概念是非线性表,比如二叉树、堆、图等。之所以叫非线性,是因为,在非线性...原创 2020-03-24 12:09:01 · 239 阅读 · 0 评论 -
《数据结构与算法之美》学习笔记(2) 复杂度分析
复杂度分析 一. 如何分析、统计算法的执行效率和资源消耗? (1)大 O 复杂度表示法 先看一段代码: int cal(int n) { int sum = 0; int i = 1; for (; i <= n; ++i) { sum = sum + i; } return sum; } 从 CPU 的角度来看,这段代码的每一行都执行着类似的操...原创 2020-03-21 22:55:54 · 778 阅读 · 0 评论 -
《数据结构与算法之美》学习笔记(1)
为什么学习数据结构与算法? 直接的好处是能够写出性能更优的代码。 算法,是一种解决问题的思路和方法,有机会应用到生活和事业的其他方面。 数据结构与算法,能有效训练大脑思考能力,使我们看待问题的深度,解决问题的角度就会完全不一样。提升个人的核心竞争力。 什么是数据结构?什么是算法? 从广义上讲,数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法。 从狭义上讲,也就是《数据结构与算法之美...原创 2020-03-21 22:51:22 · 312 阅读 · 0 评论