选择排序:假设一位最小值(或者最大值)不断找最小值进行替换
插入排序:假设第i个之前都是有序的
默认第一个值为一个有许多数列,之后依次插入后面每一个值
二分查找:有序序列才可,在有序数列里通过中间值找对应数字
大O
时间复杂度:O(1) O(logN) O(n) O(n^2)
空间复杂度
函数:一段实现某一特定功能的代码的集合,本质上实现了代码的高度复用
定义方式:def 函数名([形参]):(满足标识符命名规范
一行或者多行的函数体
[return返回值]
调用方式:函数名()
函数碰见return后会立刻返回,不会执行后面的代码
本地变量(局部变量)和全局变量
本地变量(局部变量):声明在函数内的变量,只能在函数内进行访问,外部进行访问要通过return返回
全局变量:全局变量在任何位置都能被读取,默认情况下不允许被函数内部更改
global 变量 声明为全局变量,函数内就可更改
函数调用的本质:程序启动的瞬间,会生成至少一个执行栈,函数是在堆中存放的,每当函数被调用时,会进行压栈
调用结束后,会立刻进行弹栈
值传递和引用传递
值传递传递的是值,不能更改,引用传递传递的是内存地址,可以更改
参数:
默认值参数:大多数情况下,该参数值不需要改版,书写位置一般在正常参数的后面,方便用户调用函数
默认值参数指向不可变数据
可变参数 *参数名(一般为*args)
传入的参数为元组或列表,只需要在元组或列表前添加*,就会把元组或列表作为可变参数插入
匿名函数 lambda表达式
lambda[参数]:函数
偏函数:
int(x,base=10)--> integer 默认按照十进制进行转换
偏函数:通过设定参数的默认值,可以降低函数调用的难度
简单总结 functools.partial 的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。
递归函数:函数内部调用自身,递归函数就是为了解决能够同分治思想解决问题的
分治思想:将一个大问题,划分成若干个相互独立,且与原问题性质相同的子问题,求出子问题的解,就可以得到原问题的解
斐波那契、不死兔子:
爬楼梯:
字符串:是一种典型的不可变类型,字符串是一个对象,字符串也存在下标
定义:‘ ’,“ ”,''' ''' , """ """,str()
capitalize():首字母大写 返回新的字符串
center():居中对齐
endswith():判断字符串是否以什么结尾,返回布尔值
startswith():是否以….开始,返回布尔值
find(查找的字符,【检索开始的下标,检索结束的下标】):从左到右检索某个字符或字符串,找到第一个满足的字符或字符串,返回下标
find()未检索到会返回-1,index()未检索到直接报错
rfind():从右向左进行检索
format():格式化字符串的
join():按照特定的规则进行字符串的拼接
split():按照特定的字符串进行分割,最终返回是一个列表
upper():转大写
lower():转小写
strip():清除字符串两边的空格
lstrip():清除左边的空格
rstrip():清除右边空格
title():标题格式,每个单词首字母大写
replace(old,new)返回一个新的字符串
encode():转换编码格式,将字符串转换为字节
切片操作
下标:获取到某一个元素
切片:拿到多个有序地元素
可以对标range[start : end : step]
start不写的情况下,默认从下标为0的地方开始切片,取左不取右
end不写的情况下,默认直接切片刀所有元素结束
【:】能切到完整的对象
step不写的情况下默认为1
【::-1】从右往左,相当于翻转
切片切不到时无返回,不会报错