Skip to content

ejunjsh/algs4

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

algs4

this place is where i take notes from book "algs4"

chapter01 基础

算法 构造函数 union() find()
quick-find算法 N N 1
quick-union算法 N 树的高度 树的高度
加权quick-union算法 N lgN lgN

chapter02 排序

算法 是否稳定 是否为原地排序 时间复杂度 空间复杂度 备注
选择排序 N^2 1
插入排序 介于N和N^2之间 1 取决于输入元素度排列情况
希尔排序 NlogN? or N^6/5 1
快速排序 NlogN lgN 运行效率由概率提供保证
三向快速排序 介于N和NlogN之间 lgN 运行效率有概率保证,同时也取决于输入元素的分布情况
归并排序 NlogN N
堆排序 NlogN 1

chapter03 查找

算法(数据结构) 最坏情况下的运行时间的增长数量级(N次插入之后)(查找:插入) 平均情况下的运行时间的增长数量级(N次随机插入之后)(查找命中:插入) 关键接口 内存使用(字节)
顺序查找(无序链表) N:N N/2:N equals() 48N
二分查找(有序数组) lgN:N lgN:N/2 compareTo() 16N
二叉树查找(二叉查找树) N:N 1.39lgN:1.39lgN compareTo() 64N
2-3树查找(红黑树) 2lgN:2lgN 1.00lgN:1.00lgN compareTo() 64N
拉链法(链表数组) <lgN:<lgN N/(2M):N/M equals() hashCode() 48N+32M
线性探测法(并行数组) clgN:clgN <1.5:<2.5 equals() hashCode() 在32N和128N之间

chapter04 图

无向图

问题 解决方法
单点连通性 DepthFirstSearch
单点路径 DepthFirstPaths
单点最短路径 BreadthFirstPaths
连通性 CC
检测环 Cycle
双色问题(图的二分性) TwoColor

有向图

问题 解决方案
单点和多点的可达性 DirectedDFS
单点有向路径 DepthFirstDirectedPaths
单点最短有向路径 BreadthFirstDirectedPaths
有向环检测 DirectedCycle
深度优先的顶点排序 DepthFirstOrder
优先级限制下的调度问题 Topological
拓扑排序 Topological
强连通性 KosarajuSharirSCC
顶点对的可达性 TransitiveClosure

加权无向图

加权有向图

算法 局限 路径长度的比较次数(增长的数量级)一般情况:最坏情况 所需空间 优势
Dijkstra算法(即时版本) 边的权重必须为正 ElogV:ElogV V 最坏情况下仍有较好的性能
无环加权有向图的最短路径算法(拓扑排序) 只适合用于无环加权有向图 E+V:E+V V 是无环图中的最优算法
基于队列的Bellman-Ford算法 不能存在负权重环 E+V:VE V 适用领域广泛

字符串

字符串排序

算法 是否稳定 原地排序 在将基于大小为R的字母表的N个字符串排序的过程中调用charAt()方法次数的增长数量级(平均长度为w,最大长度为W)运行时间:额外空间 优势领域
字符串的插入排序 N到N^2之间:1 小数组或者是已经有序的数组
快速排序 Nlog2N:logN 通用排序算法,特别适合用于空间不足的情况
归并排序 Nlog2N:N 稳定的通用排序算法
三向快速排序 N到NlogN之间:logN 大量重复键
低位优先的字符串排序 NW:N 较短的定长字符串
高位优先的字符串排序 N到Nw之间:N+WR 随机字符串
三向字符串快速排序 N到Nw之间:W+logN 通用排序算法,特别适合用于含有较长前缀的字符串

单词查找树

算法(数据结构) 处理由大小为R的字母表构造的N个字符串(平均长度为w)的增长数量级,未命中查找检查的字符数量:内存使用 优点
二叉树查找(BST) c1(lgN)^2:64N 适用于随机排列的键
2-3树查找(红黑树) c2lgN)^2:64N 有性能保证
线性探测法(并行数组) w:32N~128N 内置类型缓存散列值
字典树查找(R向单词查找树) logRN:(8R+56)N~(8R+56)Nw 适用于较短的键和较小的字母表
字典树查找(三向单词查找树) 1.39lgN:64N~64Nw 适用于非随机的键

子字符串查找

About

this place is where i take notes from book 《算法(第四版)》

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages