基本知识点
复杂度对比
执行次数复杂度非正式术语
12O(1)常数阶2n+1O(n)线性阶2n^2+2n+1O(n^2)平方阶2log2n+1O(logN)对数阶n3+n2+n+100O(n^3)立方阶2^nO(2^n)指数阶
O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)
算法优化方向
时间换空间空间换时间
数组(Array)
数组是一种顺序存储的线性表,所有元素的内存地址是连续的数组的容量不可以动态修改,因此有了动态数组堆空间 int[] array = new int[]{11,22,33}; 内存地址|内存空间 -|- 0x1110|11 0x1111|22 0x1112|33
链表(Linked List)
链表是一种链式存储的线性表,所有元素的内存地址不一定是连续的双向链表、两个节点之间头尾相连
栈(Stack)
栈是一种特殊的线性表,只能在一端进行操作先进后出远,后进先出
队列(Queue)
队列是一种特殊的线性表,只能在头尾两端进行操作队尾:添加元素队头:移除元素先进先出