算法与数据结构你需要了解

数据结构分类

按照存储结构来分
  • 线性结构:Array、Stack/Queue、PriorityQueue(heap)、LinkedList(single/double)
  • 非线性结构:Tree/Binary Tree、Binary Search Tree、HashTable、DisjointSet并查集、Trie字典树、Bloom Filter、LRU Cache
常见算法
  • General Coding 经典算法
  • In-order/Pre-order/Post-order traversal 前中后序遍历
  • Greedy 贪心算法
  • Recursion/Backtrace 回溯/递归
  • Depth -first Search 深度优先遍历
  • Breadth -first Search 广度优先遍历
  • Divide and Conqner 分治算法
  • Dynamic Programming 动态规划
  • Binary Search 二分查找
  • Graph 图
时间复杂度
  • O(1) 常数复杂度
  • O(logn) 对数复杂度
  • O(n) 线性时间复杂度
  • O(n^2) 平方
  • O(n^3) 立方
  • O(2^n) 指数
  • O(n!) 阶乘

O(1) < O(n) < O(nlogn) < O(n^2) < O(2^n) < O(n!)

数据量越大,时间复杂度低的,用的时间越少

/**
 * 1+2+3+...+n
 */
 
 y = 0
 for i = 1 to n:
 	y = i + y
 	
时间复杂度为O(n) ,然后对其进行优化使用公式

y = n * (n + 1) / 2 

时间复杂度为O(1)
斐波那契数列 1 1 2 3 5 8 13 21...n
F(n) = F(n-1) + F(n-2)

def fib(n):
	if (n==0 or n==1)
		return 1
	return fib(n-1) + fib(n-2)
这个的时间复杂度为O(2^n)
对于递归的算法 我们可以 主定理公式 来求解

常见数据结构:
在这里插入图片描述
数据结构和算法学习图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值