
数据结构
我是一只程序⚪
多读书,多看报
展开
-
解决Python TypeError: Object of type int64 is not JSON serializable
错误场景:在使用json.dumps时,出现问题: TypeError: Object of type int64 is not JSON serializable问题分析:python3中没有int64这个数据类型,所有的整型都是int报错里的int64指的是<class ‘numpy.int64’>,所以很有迷惑性解决方案:TypeError: Object of type int64 is not JSON serializabledef default_dump(obj原创 2022-03-02 12:59:27 · 22796 阅读 · 4 评论 -
数据结构:堆(Heap)
堆就是用数组实现的二叉树,所有它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置。堆的常用方法:构建优先队列 支持堆排序 快速找出一个集合中的最小值(或者最大值) 在朋友面前装逼堆属性堆分为两种:最大堆和最小堆,两者的差别在于节点的排序方式。在最大堆中,父节点的值比每一个子节点的值都要大。在最小堆中,父节点的值比每一个子节点的值都要小。这就是...原创 2019-02-01 10:35:40 · 1890 阅读 · 0 评论 -
同步与异步、阻塞与非阻塞深层分析
“阻塞”和"丰阻塞与“同步”和“异步"不能简单的从字面理解, 提供一个从分布式系统角度的回答。1.同步与异步同步和异步关注的是消息通信机制(synchronous communicatior/ asynchronous communication),所谓同步,就是在发出一个”调用“时,在没有得到结果之前,该”调用"就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由“调用者...原创 2019-02-24 19:52:11 · 351 阅读 · 0 评论 -
Python实现二叉树的遍历(前序,中序,后序,层级,深度)
前序遍历:前序遍历算法先访问树的根节点,然后以类似的方式分别遍历左子树和右子树,如下图所示中序遍历:中序遍历算法先遍历左子树,然后访问根节点,最后遍历右子树,如下图所示:后序遍历:后序遍历算法先遍历左子树,然后右子树,最后访问根节点,如下图所示:层序遍历: 层序遍历的算法从0层级开始,在每一层级按照从左到右的顺序访问节点,如下图所示:用Python来实现:...原创 2019-04-26 23:06:11 · 840 阅读 · 0 评论 -
排序算法的时间与空间复杂度分析
时间复杂度时间复杂度是同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。计算机科学中,算法的时间复杂度是一个函数,它定性描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷...原创 2019-04-28 21:17:54 · 4561 阅读 · 0 评论 -
散列表查找为何如此之快
一、散列函数散列是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。建立了关键字与存储位置的映射关系,公式如下:存储位置 =f(关键字)设所有可能出现的关键字集合记为U(简称全集),实际发生(即实际存储)的关键字集合记为K(|K|比|U|小得多)。散列方法是使用函数f将U映射到表T[0..m-1]的下标上(m=O(|U|...原创 2019-04-24 22:28:40 · 984 阅读 · 0 评论