算法与数据结构
一 认识复杂度 对数器 二分法
1 固定时间的操作 常数操作 寻址(算偏移量)
2 不是固定时间的操作 链表寻址
3 复杂度
时间复杂度 数据量为N的样本 常数操作的数量 数组的排序 最高阶忽略常数项 O(N²)
额外空间复杂度 在实现算法流程的过程中,需要开辟一些空间来支持算法流程,作为输入参数的空间,不算额外空间,作为输出结果的空间,不算额外空间。如果流程只需要开辟有限的几个变量,额外空间复杂度就是O(1)
算法流程的常数项 我们会发现,时间复杂度这个指标是忽略低阶项和所有常数系数的。难道两个相同时间复杂度的流程,在实际运行时候就一样的好吗?当然不是,时间复杂度只是一个很重要的指标而已。如果两个时间复杂度一样的算法,你还要在时间上拼优劣,就进入到拼常数时间的阶段,简称拼常数项。
4 算法流程的常数项的比拼方式
放弃理论分析,生成随机数据直接测试
5 对数器
6 二分法
二 异或 位运算
异或运算:相同为0,不同为1 (二进制)
满足交换和集合定律
面试题 怎么最简单实现两个数交换
```java
package cn.qqjx.taobao;
public class Application {
public static void main(String[] args) {
int a = 100;
int b = 50;
System.out.println("交换前:"+a + "===="+b);
a = a^b;
b = a^b;
a= a^b;
System.out.println("交换后:"+a + "===="+b);
}
}
一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这个数
public class Application2 {
public static void main(String[] args) {
int[] arr = {1,2,3,3,2,4,4};
int resutl=0;
for (int i = 0; i < arr.length; i++) {
resutl = resutl^arr[i];
}
System.out.println("结果:"+resutl);
}
}

被折叠的 条评论
为什么被折叠?



