计算机科学
文章平均质量分 68
本栏目包括:算法、数据结构、数据编码解码等构成计算机科学核心知识点,是每个IT从业人员需要夯实的基础,正所谓不积跬步无以至千里!
罗汉爷
每一个不曾起舞的日子,都是对生命的辜负!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构与算法07-图
图是一种善于处理关系型数据的数据结构,使用它可以很轻松地表示数据之间是如何关联的。图的实现形式有很多,最简单的方法之一就是用散列表。因为从散列表里查找一个键所对应的值只需要 1 步,所以查找 Alice 的朋友能以 O(1)的时间复杂度完成,如下所示。原创 2024-06-05 16:14:45 · 436 阅读 · 0 评论 -
数据结构与算法06-树结构(二叉树)
"""二叉树节点的定义。该类用于构建二叉树的节点结构,每个节点包含一个值(val)、左子节点(left)和右子节点(right)。val: 节点的值,默认为0。left: 左子节点,默认为None。right: 右子节点,默认为None。"""二叉树是一种强大的基于结点的数据结构,它既能维持元素的顺序,又能快速地查找、插入和删除。尽管比它的近亲链表更为复杂,但它更有用。值得一提的是,树形的数据结构除了二叉树以外还有很多种,包括堆、B 树、红黑树、2-3-4树等。它们也各有自己适用的场景。原创 2024-06-03 15:58:48 · 937 阅读 · 1 评论 -
数据结构与算法05-链表
你学会了在特定情况下使用链表来改善性能。后面还会介绍更复杂的基于结点的数据结构,它们更常用,并且对性能的提升更大。原创 2024-06-02 21:14:10 · 751 阅读 · 0 评论 -
数据结构与算法04-栈和队列
掌握了栈和队列,就解锁出了下一个目标:学习基于栈的递归。递归也是其他高级算法的基础,我们将会在本书余下的部分讲解它们。原创 2024-06-02 15:51:02 · 535 阅读 · 0 评论 -
数据结构与算法03-散列表(哈希表)
散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在存储器存储位置的数据结构。也就是说,它通过计算出一个键值的函数,将所需查询的数据映射到表中一个位置来让人访问,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。大多数编程语言都自带散列表这种能够快速读取的数据结构。但在不同的语言中,它有不同的名字,除了散列表,还有散列、映射、散列映射、字典、关联数组。从散列表里读取数据只需要 O(1),因为其过程所花的时间是恒定的。原创 2024-06-02 15:04:04 · 509 阅读 · 0 评论 -
数据结构与算法02-排序算法
懂得区分最好、平均、最坏情况,是为当前场景选择最优算法以及给现有算法调优以适应环境变化的关键。记住,虽然为最坏情况做好准备十分重要,但大部分时间我们面对的是平均情况。原创 2024-05-31 15:49:18 · 1110 阅读 · 2 评论 -
数据结构与算法01-入门
牢记:世界上并没有哪种适用于所有场景的数据结构或者算法。你不能因为有序数组能使用二分查找就永远只用有序数组。在经常插入而很少查找的情况下,显然插入迅速的常规数组会是更好的选择。原创 2024-05-30 21:48:35 · 466 阅读 · 0 评论 -
【快速排序】采用D&C(divide and conquer)方法求解
介绍快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。平均状况下,排序 n 个项目要 Ο(nlogn) 次比较,在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。主要步骤:1、从数列中挑出一个元素,称为 “基准”(pivot);2、重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partiti原创 2021-12-01 12:31:01 · 491 阅读 · 0 评论 -
【最大公约数】欧几里得算法
介绍本篇介绍如何求2个整数的最大公约数,按《算法图解》中的思路也就是给你一块矩形土地,如何将其等分成面积最大的若干个方形?欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。代码实现# 计算2个数最大公约数,欧几里得、辗转相除法# 此处假设a>=bdef gcd(a, b): if b == 0: return a else: re原创 2021-12-01 10:20:15 · 1074 阅读 · 0 评论
分享