摘要: 时间复杂度 空间复杂度 可否实现稳定性 选择 \(O(N^2)\) \(O(1)\) No 冒泡 \(O(N^2)\) \(O(1)\) Yes 插入 \(O(N^2)\) \(O(1)\) Yes 归并 \(O(N\log N)\) \(O(N)\) Yes 快速 \(O(N\log N)\) \ 阅读全文
posted @ 2021-02-01 12:34 对影成一双 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 递归算法每一层函数的时间复杂度的通项形式可以描述如下: \(T(n)=aT(\frac{n}{b}) + O(n^d)\) 可以猜测,最后的时间复杂度和这a, b ,d几个参数有关。 整个递归规程的描述用下面一张图就能够概括: 最后的公式是一个累加函数 \(Total work = \sum^{lo 阅读全文
posted @ 2021-01-29 16:42 对影成一双 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 进程的切换 进程的切换本质上是保存当前进程的状态信息到该进程的PCB中,并载入接下来要运行的被调度算法选中的进程的PCB信息到CPU中。 并且我们要明白,PCB的信息都是在内核态中维护,所以进程的切换是在内核中完成的。 PCB的切换通常我们也称之为上下文切换(context switch) 进程的生 阅读全文
posted @ 2021-01-26 11:10 对影成一双 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 进程和线程的宏观理解 阅读全文
posted @ 2021-01-26 10:45 对影成一双 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 1. 如果字符串内部既包含'又包含"怎么办?可以用转义字符\来标识,比如: 表示的字符串内容是: 转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\,可以在Python的交互式命令行用print()打印字符串看看: 如果字符串里面有很多字符都需 阅读全文
posted @ 2019-06-20 21:28 对影成一双 阅读(1562) 评论(0) 推荐(0) 编辑
摘要: Python内置的@property装饰器就是负责把一个方法变成属性调用的 具体参考:使用@property @property的实现比较复杂,我们先考察如何使用(具体实现可以暂时不加考虑)。把一个getter方法变成属性,只需要加上@property就可以了,此时,@property本身又创建了另 阅读全文
posted @ 2019-06-19 22:38 对影成一双 阅读(542) 评论(0) 推荐(0) 编辑
摘要: 首先要明白几个概念: 类:class,是抽象的模板; 实例:instance,是基于类的具体的一个例子; 一个类里边,既有“属性”,也有“方法”,属性比如说:年龄、性别、婚姻等等,方法是对特定属性的加工、处理等。 创建实例:bart = Student('Bart Simpson', 59); ba 阅读全文
posted @ 2019-06-19 18:38 对影成一双 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 装饰器是用来描述函数,记录日志,提供信息的函数,是一个为了更好的服务主函数的副函数: 详情还需查看:廖雪峰装饰器 关键在于:【import functools是导入functools模块。模块的概念稍候讲解。现在,只需记住在定义wrapper()的前面加上@functools.wraps(func) 阅读全文
posted @ 2019-06-18 20:17 对影成一双 阅读(463) 评论(0) 推荐(1) 编辑
摘要: 具体还是要参考:廖雪峰——生成器 要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的list[]改成(),就创建了一个generator: 第二种方法——生成器函数:如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator 阅读全文
posted @ 2019-06-18 18:04 对影成一双 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 杨辉三角定义如下: 把每一行看做一个list,试写一个generator,不断输出下一行的list: 方法二:神操作,可以借鉴其精妙之处 待完善!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 阅读全文
posted @ 2019-06-17 18:27 对影成一双 阅读(147) 评论(0) 推荐(0) 编辑