自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 《数据结构与算法》学习笔记之往线性表中插入数据

接下来我们将定义一个类,该类为游戏存储高分(一般默认为前十名)首先我们创建一个存储分数以及其对应的姓名的类Gamescore,然后创建该类的对象添加进存储高分的类Scoreboard中,注意该类的add方法,当存储的条目数还不足10个的时候,我们将新分数与之前的分数相比,然后插入到合适的名次位置,当存储的条目数超过10时,将新分数与最后一名对比,若更高则将其插入到合适的名次位置,否则不插入。...

2019-07-16 09:48:57 731

原创 《数据结构与算法》读书笔记之python序列类型的效率

1.python序列中搜寻某个值的时间复杂度是O(k+1),k为从左开始第一次找到该值时的它的索引;比较时的时间复杂度为O(k+1),k为两个相比较的序列第一次对比出不同时的该位置的索引;在原有实例上创建新的实例,如列表的切片或者两列表相加,其时间复杂度是O(k),k为新序列中值的数量。2.元组是不可变序列,所以没有删除添加以及变更等操作,当我们向列表中append或者pop(默认删除最后一个...

2019-07-13 23:12:44 133

原创 《数据结构与算法》学习笔记之动态数组的代码实现

当底层数组已满,要添加新元素时,底层数组需要扩大两倍,当删除的元素小于数组的1/4时,数组缩小为原来的两倍,此处的底层数组的创建由ctypes模块来实现,封装在方法_make_array中。import ctypesclass DynamicArray(): def __init__(self): self._n = 0 self._capacit...

2019-07-10 23:22:53 146

原创 《数据结构与算法》学习笔记之动态数组和摊销

在计算机系统中,创建低层次数组时,必须生成数组的大小,以便分配连续的内存,python中的tuple和str都是不可变的数据类型,所以当其实例化时,低层数组的大小已经确定,不需要扩展内存单元,但是像list这样的可变类型则需要对数组进行扩展,但是数组的大小是固定的,所以需要实现动态数组,也即当底层数组(例如数组A)已满,需要添加新元素到列表中时,我们会执行以下步骤:(1)分配一个更大的数组B...

2019-07-09 08:52:36 395

原创 递归练习题(1)

1.在只使用加法和整数除法的情况下,描述一个递归算法,计算以2为底的n的对数的整数部分def log_2 (n): if n <= 0: raise ValueError('n expected not smaller than 0') elif 0 < n < 1: return -1 elif 1 <= n ...

2019-07-09 01:04:10 382

原创 递归(2)

1.设计递归算法时,一定要避免陷入无限递归的情况(虽然python设置了一个最大递归深度,一般为1000,达到限制就会产生RunTimeError的错误),使得所有的递归调用链最终都会达到一种基本情况,并且每个基本情况的处理不使用递归。2.通过分析问题,写出更好的递归算法。以下是两个计算幂的递归算法:def power(x, n): if n == 0: ret...

2019-07-05 21:49:13 114

原创 递归(1)

1.递归执行过程:如果一个函数的执行导致嵌套函数的调用,那么前者调用的执行将会挂起,其活动记录(每当一个函数被调用时都会创建一个活动记录,用来存储其调用的参数和局部变量的命名空间,以及这个函数当前正在执行的命令的信息)将存储源代码中的位置,这个位置是被调用函数返回后将继续执行的控制流。2.例1:二分查找算法def binary_search(data, target, low, high...

2019-07-04 14:14:54 87

原创 运算符重载和python的特殊方法

1.例如:对于新的类来说,“+”操作符是未定义的,当我们在类中定义 __add__方法时,可重载“+”操作符,还有其他“-”、“/”、“*”等操作符,此处以__add__为例class Vector(): def __init__(self, coords): self.coords = coords @property def co...

2019-07-04 09:04:44 229

原创 面向对象

抽象基类与命名空间

2019-06-22 00:22:05 84

原创 random模块

python的random模块生成的是伪随机数,其内部使用梅森旋转算法根据一个或者多个过去的数字生成的序列来产生下一个数,我们将其需要的初始数字称为种子,如果种子相同,则其产生的序列是永远相同的,我们可以用来自某个用户输入的或者当前以毫秒为单位的系统时间等作为种子以产生不同的序列。 random模块通过定义一个Random类支持伪随机数生成,该类的实例为有独立状态的生成...

2019-06-21 22:19:18 75

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除