1、讲解常数操作(00:00)
定义:一个操作如果和样本的数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作。
说明了什么是常数操作,在时间复杂度的计算中,常数操作为计数单元,一个操作是一个单元,但并不是所有的常数操作消耗的时间都是相同的。
2、时间复杂度(4:23)
描述一个算法中常数操作的数量的指标,一般是多项式去最高项并把系数置为1。
3、 选择排序(4:23) 代码(23:28)
时O(n^2) 空O(1) 不受数据序列的影响(以下简称不受)
流程:
①先从0~N-1找到最小值赋给0位置
②从1~N-1上找到最小值赋给1位置
……
tips:利用minindex寻找最小值并实现交换不用频繁交换数组元素,只需更新索引值
4、 冒泡排序(26:48) 代码(29:00)
时O(n^2) 空O(1) 不受
流程:
①先排0 1位置,二者较大的冒泡
②1 2位置比较,二者较大的冒泡
……
ps:除了左神的代码还有在刷乙级的时候看到的写法记得复习
5、 讲异或运算(31:45)
异或看作无进位相加。
用法①:相同的两个数异或必定为0(由此衍生下面的算法题)
用法②:任何数与0异或都是本身