算法基础
时间复杂度
适用于大多数场景
一个 for 循环 O(n)
两个 for 循环 O(n²)
三个 for 循环 O(n³)
每次减少一半 O(log n)
空间复杂度
适用于大多数场景
创建常数项变量 O(1)
创建一个list O(n)
递归
1、定义
- 在函数内部,可以调用其他函数。
- 如果一个函数在内部调用自身本身,这个函数就是递归函数。
2、递归特性
- 必须有一个明确的结束条件
- 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
- 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的
- 每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。
- 由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)
查找
线性查找(linear_search)
二分查找(折半查找)(binary_search)
- 排序
- low b 三人组
- 冒泡排序(bubble_sort)
- 插入排序(insert_sort)
- 选择排序(select_sort)
- 🐂b 三人组
- 堆排序(heap_sort)
- 归并排序(merge_sort)
- 快速排序(quick_sort)
- 希尔排序
- 桶排序
- low b 三人组
- 数据结构
- 列表
- 栈
- 队列
- 链表
- 单链表
- 双链表
- 哈希表
- 树
- 二叉树
- AVL树
- 动态规划
- 设计模式