数据结构——基础知识

基本知识点

复杂度对比

执行次数 复杂度 非正式术语
12 O(1) 常数阶
2n+1 O(n) 线性阶
2n^2+2n+1 O(n^2) 平方阶
2log2n+1 O(logN) 对数阶
n3+n2+n+100 O(n^3) 立方阶
2^n O(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)

  • 队列是一种特殊的线性表,只能在头尾两端进行操作
  • 队尾:添加元素
  • 队头:移除元素
  • 先进先出

你可能感兴趣的:(学习专栏,Java面试)